gpt4 book ai didi

C# WPF 内容切换

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:18 26 4
gpt4 key购买 nike

我有一个Window,可以显示三种类型的内容(都是UserControl类型):

  1. 登录 View
  2. 应用 View
  3. 错误报告

在这些之间切换的最合适方式是什么?我的想法是在构造函数中传递 Window 的实例,然后处理它的内容。

Content = new LoginView(this);

然后从LoginView改变内容,

public LoginView(Window wnd){
InitializeComponents();
wnd.Content = new MainView(wnd);
}

但这不会更新窗口的内容。是调用者(LoginView)是窗口的当前内容引起的吗?如果是这种情况,处理这种情况的正确方法是什么?

另请注意,提供的代码段不包含任何逻辑。我只是尽可能简单地说明我面临的问题。

基本上这些控件之间的联系是这样的:

  1. 登录 View - 应用程序启动时- 当应用程序窗口发送一个返回未经授权的请求(到服务器)时

  2. 应用 View - 处理所有应用程序的功能

  3. 错误 View - 在出现错误时替换应用程序/登录 View 并通知用户该怎么做

最佳答案

你也许应该看看 MVVM图案。当使用 MVVM 模式时,通常每个用户控件/ View 都应该有自己的 View 模型。因此,您可以在 MainView 中定义不同的 View 。如下例所示:

<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。这将引用正确的 View 。

<ContentControl Content="{Binding LoginViewModel}" />

因此将显示 DataTemplate,具体取决于传递的 xxxViewModel。

关于C# WPF 内容切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25568930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com