2008-12-24 67 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示例,则可能需要检查。

好运。