【发布时间】:2011-11-04 19:37:29
【问题描述】:
我有一个 MVVM 应用程序,我们公司在应用程序的某个地方使用了无法使用 {Binding} 的第三方。它是一个绘制形状等的组件。我想要什么,当 ViewModel 从持久存储中加载所有形状时,通知 View 来绘制它们。在一个完美的世界中,我只需要获取第三方并将其绑定到 ViewModel Shapes 集合,但我不能。
从那里开始,我的想法是我可以从 View 中获取 ViewModel(通过 DataContext)并挂钩 PropertyChanged 事件。问题是DataContext还没有在构造函数中初始化,所以它是NULL,我不能hook事件。以下是代码示例:
public CanvasView()
{
InitializeComponent();
((CanvasViewModel)this.DataContext).PropertyChanged += new PropertyChangedEventHandler(CanvasView_PropertyChanged); //Exception Throw here because DataContext is null
}
void CanvasView_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "Shapes")
{
DrawShapes();
}
}
在这种情况下,我如何从我的 ViewModel 获取信息到我的 View?
【问题讨论】:
标签: c# .net silverlight silverlight-4.0 mvvm