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框架可以帮助缓解这种情况在他们的设计中可能会引起你的兴趣,但如果你想手动处理这一切,这通常是公认的方法。 –