gpt4 book ai didi

c# - 使用两个 View 并在 View 之间切换

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:42 24 4
gpt4 key购买 nike

我在这 link 上看到了例子, 如何在两个 View 之间切换。最简单的解决方案,非常适合我的应用程序 - 我也将只有两个 View 。

所以我们有一个父 View (MainWindow) 和两个 subview 。父 View 有两个按钮用于在位于“DockPanel”中的这两个 View (“第一个 View ”和“第二个 View ”)之间切换。

我的问题是如何使用“第一个 View ”中的任何按钮切换到第二个 View ,以及如何使用“第二个 View ”中的任何按钮返回“第一个 View ”。我想要的是摆脱 DockPanel 并使用 View 中的按钮。

请指教,如何做到这一点。如有任何问题请提问。谢谢!

最佳答案

您可以使用来自每个 subview 模型的事件来通知父 View 更改 View 。因此,在下面的代码中,在 View1(绑定(bind)到 ViewModel1)上按下 ButtonOnViewModel1Command,这会引发 SwitchViewModel2Request 事件。 MainViewModel 订阅此事件并将 CurrentViewModel 集合切换到 ViewModel2。您可以在 ViewModel2 上执行相同的操作以切换回 ViewModel1。

 public class MainViewModel
{
private ViewModel1 _viewModel1 = new ViewModel1();
private ViewModel2 _viewModel2 = new ViewModel2();

public MainViewModel()
{
//event from ViewModel1
_viewModel1.SwitchViewModel2Request += NavigateToView2;
}

//switch View to ViewModel2
private void NavigateToView2(object sender, EventArgs e)
{
CurrentViewModel = _viewModel2;
}
}
public class ViewModel1
{
public ViewModel1()
{
ButtonOnViewModel1Command = new RelayCommand(Button1Method);
}
//some button on child view 1
public RelayCommand ButtonOnViewModel1Command { get; set; }


private void Button1Method(object obj)
{
OnSwitchViewModel2Request();
}

//event that MainViewModel will subscribe to
public event EventHandler SwitchViewModel2Request = delegate { };
private void OnSwitchViewModel2Request()
{
SwitchViewModel2Request(this, EventArgs.Empty);
}
}

关于c# - 使用两个 View 并在 View 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33333261/

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