0

在我的课程“ScheduleViewModel”中,我有以下属性:

private ReminderFilter filter;
public ReminderFilter Filter
{
 get { return filter; }
 set
 {
     filter = value;
     NotifyPropertyChanged("Filter");
 }
}

我想做的是绑定到这个对象的属性,而不需要在视图模型中公开它们。我尝试了以下 XAML,但没有成功:

<CheckBox IsChecked="{Binding Filter.Complete, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" Content="Show Completed"></CheckBox>

有什么建议么?

4

2 回答 2

1

我认为您需要双向绑定。Oneway 只会更新视图。如果您选中该复选框,则该值不会向下传播回对象。

于 2012-07-10T19:17:41.363 回答
0

如果您想避免在视图模型中公开该属性,则必须在 ReminderFilter 模型中实现 INotifyPropertyChanged。

模型属性更改时获取通知的类似 SO 讨论

我知道您说过您宁愿不在视图模型中公开该属性,但如果您反对在模型中实现 INotifyPropertyChanged:

    private ReminderFilter filter;
    public bool FilterComplete
    {
        get
        {
            return filter.Complete;
        }
        set
        {
            if (value == filter.Complete)
                return;
            filter.Complete = value;
            NotifyPropertyChanged("FilterComplete");
        }
    } 

xml:

<CheckBox IsChecked="{Binding FilterComplete}" Content="Show Completed"></CheckBox>
于 2015-08-19T16:19:23.447 回答