绑定到View Model WPF中的对象属性

时间:2012-07-10 18:49:28

标签: c# wpf xaml binding

在我的班级'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>

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

Similar SO Discussion on Get Notified when model properties change

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

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

XAML:

<CheckBox IsChecked="{Binding FilterComplete}" Content="Show Completed"></CheckBox>