比方說,我在屏幕上的「當前記錄」編輯區域..所以我的視圖模型有一個類與所有當前編輯的屬性,如:綁定到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