具有显式接口的依赖属性

时间:2008-12-24 18:04:26

标签: c# wpf mvvm dependency-properties

我正在为我们的部门工作组合WPF演示,向他们展示WPF的优势,同时尝试遵守我们的开发标准(依赖注入和将对象开发到显式接口)。 / p>

我现在来到了一堵墙。我正在使用MVVM设计模式实现View,每次更新View Model(VM)上的属性时,我都需要更新TextBlocks Text属性。为此,我将VM属性定义为依赖属性,并将View中的TextBlocks Text属性绑定到它。

现在MV属性在我的界面上,并且(根据我们的开发标准)明确定义。从视图中我将View中TextBlock的Text属性绑定到Dependency Properties属性(而不是静态部分),但是当依赖属性值更改时,这不会更新我的View(我知道如何绑定到显式接口,所以这就我所见,这不是问题。)

真的很感激任何帮助。我可以使用具有显式接口的依赖项属性吗?如果我能怎么做,如果没有你对我在这种情况下能做些什么有任何想法?

感谢您阅读,我期待您的回复。

亚当

2 个答案:

答案 0 :(得分:5)

我不完全确定我是否理解你的问题,但为什么不在你的ViewModel上使用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属性

答案 1 :(得分: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样本,您可能需要查看。

祝你好运。