首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从视图模型WPF MVVM禁用DatePicker?

如何从视图模型WPF MVVM禁用DatePicker?
EN

Stack Overflow用户
提问于 2015-05-08 10:17:21
回答 2查看 841关注 0票数 0

我正在使用WPF开发一个WPF应用程序,我有一个组合框,其中选定的项目被绑定到视图模型,我有一个数据报警器。根据组合框的选择项,我希望禁用视图中的数据报警器。

组合:

代码语言:javascript
运行
复制
<ComboBox x:Name="comboBox2" Grid.Row="6" Grid.Column="1" SelectedIndex="0" ItemsSource="{Binding Path=DueDateOptions}" SelectedValue="{Binding Urgent}">

数据报警器:

代码语言:javascript
运行
复制
<DatePicker x:Name="datePicker1" Grid.Row="6" Grid.Column="2" SelectedDate="{Binding DueDate, Mode=TwoWay}"/>

我怎样才能达到这个目的,希望能有所帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-08 10:44:58

实现这一目标的一种方法是向ViewModel添加一个属性,并将DatePicker的IsEnabled属性绑定到该属性中。然后,您需要在紧急属性的设置器中设置属性:(假设在ViewModel中有一个名为紧急的属性):

代码语言:javascript
运行
复制
class YourViewModel {
    private bool allowPickDate;
    public bool AllowPickDate {
        get {
            return this.allowPickDate;
        }
        set {
            if (this.allowPickDate != value) {
                this.allowPickDate = value;
                this.OnPropertyChanged("AllowPickDate");
            }
       }
   }
   public UrgentType Urgent {
       get {
           ....
       }
       set {
           ....
           if (value == [whatever you expect]) {
               this.AllowPickDate = true;
           }
           else {
               this.AllowPickDate = false;
           }
       }
  }

XAML:

代码语言:javascript
运行
复制
  <DatePicker x:Name="datePicker1" IsEnabled={Binding AllowPickDate} Grid.Row="6" Grid.Column="2" SelectedDate="{Binding DueDate, Mode=TwoWay}"/>
票数 1
EN

Stack Overflow用户

发布于 2015-05-08 10:44:24

您可以在视图模型中创建属性IsDatePickerEnabled,并将datepicker上的属性IsEnabled绑定到此属性。

代码语言:javascript
运行
复制
<DatePicker x:Name="datePicker1" Grid.Row="6" Grid.Column="2" SelectedDate="{Binding DueDate, Mode=TwoWay}" IsEnabled="{Binding IsDatePickerEnabled}"/>    

private bool _isDatePickerEnabled;
public bool IsDatePickerEnabled
{
    get{return _isDatePickerEnabled;}
    set 
    {
        _isDatePickerEnabled = value;
        OnPropertyChanged(()=>IsDatePickerEnabled);
    }
}

然后在紧急属性调用方法的setter中,该方法将确定是否启用了数据选择器。

代码语言:javascript
运行
复制
private void Foo()
{
...
IsDataPickerEnabled = true/false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30121371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档