如何从ViewModel WPF MVVM中禁用datePicker



我正在使用WPF开发WPF应用程序,我有一个ComboBox,其中选定的项目绑定到ViewModel,并且我有一个datePicker。我想根据Combobox的选定元素在视图中禁用datepicker。

组合:

<ComboBox x:Name="comboBox2" Grid.Row="6" Grid.Column="1" SelectedIndex="0" ItemsSource="{Binding Path=DueDateOptions}" SelectedValue="{Binding Urgent}">

datepicker:

<DatePicker x:Name="datePicker1" Grid.Row="6" Grid.Column="2" SelectedDate="{Binding DueDate, Mode=TwoWay}"/>

我如何实现此目的,希望有一点帮助。

实现此目的的一种方法是,将属性添加到ViewModel和DatePicker的绑定Isenabled属性中。然后,您需要在紧急属性的设置中设置属性:

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:

  <DatePicker x:Name="datePicker1" IsEnabled={Binding AllowPickDate} Grid.Row="6" Grid.Column="2" SelectedDate="{Binding DueDate, Mode=TwoWay}"/>

您可以在查看模式中创建属性iSdatePickerEnabled,并在datePicker上绑定属性。

<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);
    }
}

然后在紧急属性调用方法的设置中,该方法将确定是否启用了数据拾取器。

private void Foo()
{
...
IsDataPickerEnabled = true/false;
}

最新更新