2008-12-24 71 views
3

我在工作中敲我們部門的WPF演示,向他們展示WPF的優勢,同時嘗試堅持我們的開發標準(依賴注入和開發對象到顯式接口)。顯式接口的依賴屬性

我現在已經來到了一堵牆。我正在使用MVVM設計模式實現View,並且每次更新View Model(VM)時,都需要更新TextBlocks Text屬性。爲此,我將VM屬性定義爲一個Dependency屬性,並將View中的TextBlocks Text屬性綁定到它。

現在MV屬性在我的界面上,並且(按照我們的開發標準)明確定義。從視圖我將視圖中的TextBlock的Text屬性綁定到依賴屬性屬性(而不是靜態部分),但是當依賴屬性值更改時,它不會更新我的視圖(我知道如何綁定到顯式接口,所以這就我所見,這不是問題)。

任何幫助真的不勝感激。我可以使用顯式接口的依賴屬性嗎?如果我可以怎麼做,如果沒有,你有什麼想法,我可以在這種情況下做什麼?

謝謝您的閱讀,我期待您的回覆。

亞當

+0

您能否提供XAML和/或C#代碼的示例?這將幫助我理解我可以如何幫助,因爲我對WPF綁定非常好,但對理解MVVM並不太瞭解。 – YeahStu 2008-12-24 18:52:52

回答

5

我不能完全肯定,如果我理解你的問題吧,但爲什麼不乾脆在你的視圖模型使用INotifyPropertyChanged

例如:

interface MyInterface : INotifyPropertyChanged 
{ 
    string Text { get; set; } 
} 

class MyViewModel : MyInterface 
{ 
    private string text; 
    public string Text 
    { 
     get { return text; } 
     set 
     { 
      if (text != value) 
      { 
       text = value; 
       // TODO: Raise the NotifyPropertyChanged event here 
      } 
     } 
    } 
} 

有了這個,你應該能夠簡單地綁定到Text財產

+0

對不起,我沒有意識到任何人迴應!我會放棄並讓你知道。感謝您的建議! – Adam 2009-01-05 18:58:12

1

的問題是輕度混亂,但我會採取刺傷它。我嘗試了一些依賴項屬性的變體,並且無法使它與以下接口一起工作。

interface IViewModel 
{ 
    string Text { get; set; } 
} 

我使用以下語法(每個在不同的測試中)在註冊實現類的屬性。

public static readonly DependencyProperty TextProperty = 
    DependencyProperty.Register("Text", 
     typeof(string), typeof(IViewModel)); 

然後我試着實現接口明示或暗示無濟於事。我工作的唯一組合就是當我使用。

public static readonly DependencyProperty TextProperty = 
    DependencyProperty.Register("Text", 
     typeof(string), typeof(ImplementingClass)); 

如果遇到問題並正在尋找其他WPF示例,則可能需要檢查。

好運。