首先,我想让每个人都知道我对MVVM概念非常陌生,并且对于我想要做的事情有一些解释,但是无济于事。
在我正在处理的程序中,我有一个UserControl,上面有几个按钮,需要控制主窗口的导航。我有3个不同的“页面”我希望能够在我的主窗口之间切换。而不是页面,我决定(无论出于何种原因,如果这不是最好的方法,请纠正我)为每个页面使用UserControl,并将可见性切换到正确的。我需要在切换时保持数据,所以我不相信创建Usercontrols的新实例会起作用。
我的问题是:如何以一种允许我切换可见性的方式将事件从我的“NavBarView”冒泡到主窗口,但是以MVVM的方式?我知道我可能会以错误的方式完全解决这个问题,我很乐意就更好的方式实现这种导航提出任何建议。
我必须使用WPF,因此WinForms不是一个选项。 WinForms的透明度和自定义控件太多了。
答案 0 :(得分:0)
如果可能的话,我会将“NavBar”作为主窗口的一部分,并使用它来控制表单中的子控件。我会小心嵌套用户控件。如果你可以避免它,我会(关键指示是你要在其他地方重复使用它)。我不久后接手了一个项目,它有一个主窗口,有3个独立的高度耦合的用户控件,必须全部协同工作,这是一场噩梦。我可以让它安全工作的唯一方法是让他们都将他们的数据上下文设置为相同的视图模型。如果我必须从头开始 - 将采用一种完全不同的方法与单一视图。