3

我正在为我们部门的工作拼凑一个 WPF 演示,向他们展示 WPF 的优势,同时努力遵守我们的开发标准(依赖注入和将对象开发到显式接口)。

我现在遇到了一些困难。我正在使用 MVVM 设计模式实现视图,并且每次更新视图模型 (VM) 上的属性时,我都需要更新 TextBlocks Text 属性。为此,我将 VM 属性定义为依赖属性并将视图中的 TextBlocks Text 属性绑定到它。

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

任何帮助将不胜感激。我可以将依赖属性与显式接口一起使用吗?如果可以的话,如果没有,您对我在这种情况下可以做什么有任何想法吗?

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

亚当

4

2 回答 2

6

我不完全确定我是否正确理解了您的问题,但为什么不简单地INotifyPropertyChanged在您的 ViewModel 上使用呢?

例如:

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属性

于 2008-12-24T23:36:53.780 回答
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 示例,您可能需要查看。

祝你好运。

于 2008-12-25T06:29:04.307 回答