use*_*426 0 c# data-binding wpf xaml mvvm
预期行为
我如何尝试实施
日期间隔和日期选择器的 XAML 代码
<ComboBox ItemsSource="{Binding Source={StaticResource viewByInterval}}"
SelectedValuePath="Value"
SelectedItem="{Binding IntervalMode,Mode=TwoWay}" />
<DatePicker SelectedDate="{Binding EndDate,Mode=TwoWay}"
IsEnabled="{Binding Path=EndDateEnabled[0],Mode=TwoWay}">
Run Code Online (Sandbox Code Playgroud)
查看用于更改 EndDateEnabled 的模型代码
public bool EndDateEnabled { get; set; }
public DateMode IntervalMode
{
get
{
return _dateModeValue;
}
set
{
_dateModeValue = value;
EndDateEnabled = (value == DateMode.CustomDateRange);
}
}
Run Code Online (Sandbox Code Playgroud)
我无法实现该功能。请指教。
您不需要该[0]部分(它是一个布尔值,而不是一个集合),并且绑定不需要是TwoWay:
IsEnabled="{Binding Path=EndDateEnabled}"
Run Code Online (Sandbox Code Playgroud)
INotifyPropertyChanged您还需要在 ViewModel 中实现,并引发属性(以及视图绑定到的所有属性)PropertyChanged的事件:EndDateEnabled
private bool _endDateEnabled;
public bool EndDateEnabled
{
get { return _endDateEnabled; }
set
{
if (value != _endDateEnabled)
{
_endDateEnabled = value;
OnPropertyChanged("EndDateEnabled");
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,EndDateEnabled也可以是仅具有 getter 的计算属性:
public bool EndDateEnabled
{
get { return _dateModeValue == DateMode.CustomDateRange; }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您需要调用OnPropertyChanged("EndDateEnabled")setter DateModeValue,以便刷新绑定。
| 归档时间: |
|
| 查看次数: |
3060 次 |
| 最近记录: |