比方说,我在屏幕上的“当前记录”编辑区域..所以我的视图模型有一个类与所有当前编辑的属性,如:绑定到ViewModel.SubClass.Property(子属性)
class Record {
public string Notes { get { return "Foo"; } set { _notes = value; Notify("Notes"); }
}
,我们这个类添加到视图模型:在我看来
class AdjustsmentViewModel {
public Record CurrentRecord { get { return new Record(); }}
}
我如何可以绑定到CurrentRecord的Notes属性?我试过这个:
<TextBox Text="{Binding CurrentRecord.Notes, Mode=TwoWay}" VerticalScrollBarVisibility="Auto" TextWrapping="WrapWithOverflow" AcceptsReturn="True" />
但是这不起作用。我也试着设置周围的StackPanel的DataContext的:
<StackPanel DataContext="{Binding CurrentRecord}">
在那之后,我想在我的文本框{结合注}和{绑定路径=注},但这些都不似乎工作。
也许上面真的应该工作,我在别的地方搞点什么?
更新
这在用户控件发生。这个用户控件有一个独立的视图模型,从它的父窗口。
this.DataContext = UnityUtil.Resolve<AdjustmentsViewModel>();
而且我看到一个绑定错误:在“对象”“” MainViewModel”
是查看模式设置在主窗口中没有发现“注意”属性。
为了验证我有正确的视图模型的约束,我只是直接对视图模型中添加这个属性:
public string Notes2 { get { return "Bar"; } }
和相应的文本块中的观点:
<TextBlock Text="{Binding Path=Notes2}" />
此按预期工作。
巨大成功
感谢瑞安,我能发现问题。这不是属性本身,而是CurrentRecord的设置方式。在我的setter中,我调用了INotifyPropertyChange处理程序,但它的属性的旧名称。因此,有观点没有得到CurrentRecord通知,所以我想说明的通知是不够的..
总之,这个符号是正确的:{绑定路径= CurrentRecord.Notes}
你得到的错误是什么? – Thelonias 2012-07-23 20:14:06
没有错误。我只是没有看到文本框中的值(我的默认Foo字符串) – 2012-07-23 20:19:20
什么是您的视图...窗口,用户控件,数据模板?你如何将视图的datacontext设置为视图模型对象? – Thelonias 2012-07-23 20:30:37