我正在为我们的部门工作组合WPF演示,向他们展示WPF的优势,同时尝试遵守我们的开发标准(依赖注入和将对象开发到显式接口)。 / p>
我现在来到了一堵墙。我正在使用MVVM设计模式实现View,每次更新View Model(VM)上的属性时,我都需要更新TextBlocks Text属性。为此,我将VM属性定义为依赖属性,并将View中的TextBlocks Text属性绑定到它。
现在MV属性在我的界面上,并且(根据我们的开发标准)明确定义。从视图中我将View中TextBlock的Text属性绑定到Dependency Properties属性(而不是静态部分),但是当依赖属性值更改时,这不会更新我的View(我知道如何绑定到显式接口,所以这就我所见,这不是问题。)
真的很感激任何帮助。我可以使用具有显式接口的依赖项属性吗?如果我能怎么做,如果没有你对我在这种情况下能做些什么有任何想法?
感谢您阅读,我期待您的回复。
亚当
答案 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样本,您可能需要查看。
祝你好运。