我正在使用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;
}