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}">
查看用于更改 EndDateEnabled 的模型代码
public bool EndDateEnabled { get; set; }
public DateMode IntervalMode
{
    get
    {
        return _dateModeValue;
    }
    set
    {
        _dateModeValue = value;
        EndDateEnabled =  (value == DateMode.CustomDateRange);                
    }
}
我无法实现该功能。请指教。
您不需要该[0]部分(它是一个布尔值,而不是一个集合),并且绑定不需要是TwoWay:
IsEnabled="{Binding Path=EndDateEnabled}"
INotifyPropertyChanged您还需要在 ViewModel 中实现,并引发属性(以及视图绑定到的所有属性)PropertyChanged的事件:EndDateEnabled
private bool _endDateEnabled;
public bool EndDateEnabled
{
    get { return _endDateEnabled; }
    set
    {
        if (value != _endDateEnabled)
        {
            _endDateEnabled = value;
            OnPropertyChanged("EndDateEnabled");
        }
    }
}
请注意,EndDateEnabled也可以是仅具有 getter 的计算属性:
public bool EndDateEnabled
{
    get { return _dateModeValue == DateMode.CustomDateRange; }
}
在这种情况下,您需要调用OnPropertyChanged("EndDateEnabled")setter DateModeValue,以便刷新绑定。