我有一個MVVM應用程序和應用程序中的某個地方,我們公司使用不能使用{綁定}的第三方。這是一個繪製形狀的組件,等等。我想要的是,當ViewModel從持久存儲裝載所有形狀時通知View來繪製它們。在一個完美的世界中,我只需把第三方綁定到ViewModel Shapes集合上,但我不能。Silverlight與MVVM:如何從視圖訪問ViewModel的事件?
從那裏,我的想法是,我可以從查看ViewModel(通過DataContext)並鉤住PropertyChanged事件。問題是DataContext尚未在構造函數中初始化,所以它是NULL,並且我無法掛接事件。下面是代碼的樣本:
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信息,我在這種情況下查看?
我會測試星期一。 Thx –
因此,而不是在ViewController中具有Shapes集合我將擁有UserControl內的集合嗎? –
沒有。抱歉,我的答案昨晚匆匆寫完了。 ...您需要在* viewmodel *中擁有* shapes *集合,以綁定到用戶控件上的依賴項屬性。 usercontrol是一個包裝器,它使MVVM中的非綁定友好控件可用。 – Dennis