2010-09-20 66 views
2

我有一個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); 

,但我得到一個異常時,我運行代碼。

+1

你**不要**直接訪問從視圖模型視圖屬性 - 虛擬機是不應該知道的V.使用依賴屬性的組合通過@Cameron的建議和雙向綁定。 – slugster 2010-09-21 00:32:11

+0

@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

+0

異常是因爲您將屬性元數據設置爲缺省值爲'false',而該值不能轉換爲字符串。我不喜歡從MSDN複製示例。 – 2010-09-21 04:54:46

回答

3

通過使屬性爲Dependency Property,您可以將視圖中的屬性綁定到ViewModel中的屬性。

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(MyControl), new PropertyMetadata("")); 

How to: Implement a Dependency Property

+0

我無法弄清楚。我在Cameron建議的V後面的代碼中創建了一個依賴項屬性。並在View構造函數中,我創建了一個綁定,如下所示:Binding aBinding = new Binding(); aBinding.Path = new PropertyPath(「TextToTest」); aBinding.Source = _vm; this.SetBinding(TextToTestProperty,aBinding);但是當我運行我的代碼時我得到一個異常 – Attilah 2010-09-21 01:53:18

相關問題