如何从 viewmodel WPF MVVM 禁用 DatePicker
How can I disable DatePicker from viewmodel WPF MVVM
我正在使用 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}"/>
怎样才能达到这个目的,希望大家多多帮助
您可以在视图模型中创建 属性 IsDatePickerEnabled 并将日期选择器上的 属性 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 of Urgent 属性调用方法判断数据选择器是否开启
private void Foo()
{
...
IsDataPickerEnabled = true/false;
}
实现此目的的一种方法是,将 属性 添加到 ViewModel 并将 DatePicker 的 IsEnabled 属性 绑定到它。然后你需要在 Urgent 属性 的 setter 里面设置 属性:(假设你的 ViewModel 中有一个名为 Urgent 的 属性):
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}"/>
我正在使用 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}"/>
怎样才能达到这个目的,希望大家多多帮助
您可以在视图模型中创建 属性 IsDatePickerEnabled 并将日期选择器上的 属性 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 of Urgent 属性调用方法判断数据选择器是否开启
private void Foo()
{
...
IsDataPickerEnabled = true/false;
}
实现此目的的一种方法是,将 属性 添加到 ViewModel 并将 DatePicker 的 IsEnabled 属性 绑定到它。然后你需要在 Urgent 属性 的 setter 里面设置 属性:(假设你的 ViewModel 中有一个名为 Urgent 的 属性):
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}"/>