我有一个包含多个子视图的窗口。 例如,在启动时,将向用户显示登录屏幕,当用户按下“登录”(并且成功)时,窗口应该更新为新视图。
目前我已经在XAML(主窗口)中创建了一个窗口,然后是一个页面,它被添加到窗口的框架中。这个想法是当用户按下登录时,我通知主窗口并告诉它登录成功,它应该将视图更改为其他内容。这将是一个非常常见的任务,它将由其子视图和其他操作(例如与菜单栏的交互)触发。这是正确的做法吗?
如果是这样,我如何通知主窗口子视图已完成? 另外,我目前使用一个页面作为子视图;这是对的吗?
这个项目的一个目标是让我学习MVVM,所以非常感谢MVVM的答案!
提前致谢!
MainWindow的XAML
<Window x:Class="CAST.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
>
<Frame Source="/LoginPage.xaml"/>
</Window>
答案 0 :(得分:1)
我认为视图继承将成为你追求的朋友。您应该考虑所有视图需要共享的最基本操作。例如,如果它是一个数据库应用程序,那么您可以想象有方法或事件,例如:
BeforeInsert
AfterInsert
BeforeUpdate
AfterUpdate
BeforeCancel
AfterCancel
OnError
...
...
对于视图切换,您的基本操作可能是:
OnViewLoad
OnViewUnload
Validate
...
然后我将所有代码以通用方式放入基本视图BaseView类中。拥有基本视图后,您可以使所有普通视图继承BaseView的功能。您可以通过创建BaseDataView:BaseView来进一步推广此模型,您可以在其中引入通用数据库UI操作,例如验证。
然后你的主表单可以主要使用基类或超类,如((BaseView)currentView).ValidateForm()等等等等。