2015-05-08 78 views
0

我正在開發一個WPF應用程序使用WPF,我有一個組合框選擇的項目被綁定到viewmodel,我有一個日期選擇器。我想根據組合框的selecteditem禁用視圖中的日期選擇器。我如何禁用ViewModel的DatePicker WPF MVVM

組合:

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

的日期選擇器:

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

我怎麼能達到這個目的,我希望有點幫助。

回答

1

實現此目的的一種方法是向ViewModel添加一個屬性並將DatePicker的IsEnabled屬性綁定到該屬性。然後,你需要設置緊急setter方法裏面的屬性:(假設你有一個名爲緊急財產在你的視圖模型):

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}"/> 
+0

感謝完美的作品。乾杯。 –

0

您可以在viewmodel中創建屬性IsDatePickerEnabled,並在datepicker上將屬性IsEnabled綁定到此屬性。

<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中。

private void Foo() 
{ 
... 
IsDataPickerEnabled = true/false; 
} 
相關問題