我正在使用WPF开发一个WPF应用程序,我有一个组合框,其中选定的项目被绑定到视图模型,我有一个数据报警器。根据组合框的选择项,我希望禁用视图中的数据报警器。
组合:
<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}"/>
我怎样才能达到这个目的,希望能有所帮助。
发布于 2015-05-08 10:44:58
实现这一目标的一种方法是向ViewModel添加一个属性,并将DatePicker的IsEnabled属性绑定到该属性中。然后,您需要在紧急属性的设置器中设置属性:(假设在ViewModel中有一个名为紧急的属性):
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}"/>
发布于 2015-05-08 10:44:24
您可以在视图模型中创建属性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;
}
https://stackoverflow.com/questions/30121371
复制相似问题