在我的班级'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>
有什么建议吗?
答案 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>