[英]C# WPF content switching
我有一个Window ,可以显示三种类型的内容(它们都是 UserControl 类型):
在这些之间切换的最合适方法是什么? 我的想法是在构造函数中传递Window 的实例,然后处理它的内容。
Content = new LoginView(this);
然后从 LoginView 更改内容,
public LoginView(Window wnd){
InitializeComponents();
wnd.Content = new MainView(wnd);
}
但这不会更新窗口的内容。 是由调用者 (LoginView) 是窗口的当前内容引起的吗? 如果是这种情况,处理这种情况的正确方法是什么?
另请注意,提供的代码段不包含任何逻辑。 我只是让它尽可能简单,以证明我面临的问题。
基本上这些控件之间的连接是这样的:
登录视图 - 当应用程序启动时 - 当应用程序窗口发送一个返回未经授权的请求(到服务器)时
应用程序视图 - 处理应用程序的所有功能
错误视图 - 在出现错误时替换应用程序/登录视图并通知用户该做什么
你也许应该看看MVVM模式。 通常每个用户控件/视图在使用 MVVM 模式时都应该有自己的视图模型。 所以你可以在一个 MainView 中定义不同的 Views。 如下例所示:
<Window.Resources>
<DataTemplate x:Key="LoginView" DataType="{x:Type ViewModel:LoginViewModel}">
<local:LoginView />
</DataTemplate>
<DataTemplate x:Key="AppView" DataType="{x:Type ViewModel:AppViewModel}">
<local:AppView />
</DataTemplate>
<Window.Resources>
因此,在 MainView 的代码中,您必须在 ContentControl 中传递适当的 ViewModel。 这将引用正确的视图。
<ContentControl Content="{Binding LoginViewModel}" />
因此会显示 DataTemplate,具体取决于传递的 xxxViewModel。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.