我有一個ViewModel的屬性是從視圖(XAML文件)有界。 我在代碼後面的文件中也有一個屬性「StaticText」。如何從我的ViewModel訪問視圖屬性?
如何從ViewModel內部訪問屬性「StaticText」?
卡梅倫的建議,我創建了一個依賴屬性在我看來:
String textToTest="I am just testing .";
public string TextToTest
{
get { return (string)this.GetValue(TextToTestProperty); }
set { this.SetValue(TextToTestProperty, value); }
}
public static readonly DependencyProperty TextToTestProperty =
DependencyProperty.Register("TextToTest", typeof(string),
typeof(MainWindow), new PropertyMetadata(false));
,我已經添加到了構造函數:
Binding aBinding = new Binding();
aBinding.Path = new PropertyPath("TextToTest");
aBinding.Source = viewModel;
aBinding.Mode = BindingMode.TwoWay;
this.SetBinding(TextToTestProperty, aBinding);
,但我得到一個異常時,我運行代碼。
你**不要**直接訪問從視圖模型視圖屬性 - 虛擬機是不應該知道的V.使用依賴屬性的組合通過@Cameron的建議和雙向綁定。 – slugster 2010-09-21 00:32:11
@Slugster,我找不出來。我在Cameron建議的V後面的代碼中創建了一個依賴項屬性。並在View構造函數中,我創建了一個綁定,如下所示:Binding aBinding = new Binding(); aBinding.Path = new PropertyPath(「TextToTest」); aBinding.Source = _vm; this.SetBinding(TextToTestProperty,aBinding); this.SetBinding(TextToTestProperty,aBinding);但是當我運行我的代碼時我得到一個異常。 – Attilah 2010-09-21 00:36:04
異常是因爲您將屬性元數據設置爲缺省值爲'false',而該值不能轉換爲字符串。我不喜歡從MSDN複製示例。 – 2010-09-21 04:54:46