5
關於MVVM模式的問題,我認爲我錯了。將對象傳遞給viewmodel
當觸下事件的看法我想彈出一個消息,即:
private void marker_TouchDown(MessageObject msgData)
{
CustomMessageControl message = new CustomMessageControl() {Width = 610, Height = 332};
CustomMessageViewModel messageVM = new CustomMessageViewModel(msgData);
message.DataContext = messageVM;
//Add to canvas
}
我的視圖模型發生:
public class CustomMessageViewModel
{
public MessageObject message { get; set; }
public CustomMessageViewModel(MessageObject message)
{
this.MessageObject = message;
}
}
這工作,但感覺不對。這是一種可接受的方式來填充視圖模型?
通常,viewmodels將使用INPC接口(http://msdn.microsoft.com/zh-cn/library/system.componentmodel.inotifypropertychanged.aspx)來支持通知視圖/使用者屬性已更新。我強烈建議不要在代碼中將datacontext重新綁定到附加在此場景中的新視圖模型中。 –
感謝昆頓,我瞭解使用INPC。我可能從字面上看這個,但這裏有人點擊一個視圖,我想啓動一個新的視圖,傳遞一些與他們點擊的點相關的數據。 –
請原諒我對代碼的看法,你確實在做一般認爲正確的事情,它在代碼中可能看起來不那麼漂亮,但是實例化數據並將其傳遞給視圖模型的標準方式,有幾個MVVM框架可以幫助緩解這種情況在他們的設計中可能會引起你的興趣,但如果你想手動處理這一切,這通常是公認的方法。 –