【问题标题】:Which is the best way to show another window in wpf mvvm这是在 wpf mvvm 中显示另一个窗口的最佳方式
【发布时间】:2015-09-25 12:22:07
【问题描述】:

您好,我在 wpf mvvm 中导航窗口时遇到了一些问题。我有两个 wpf 窗口,比如说 viewA 和 viewB。所有相应的视图模型都使用 prism prism:ViewModelLocator.AutoWireViewModel="True" 绑定到视图。

这是我的看法。

<Window x:Class="eBriefcase.WPF.Views.CaseHearing"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:prism="http://prismlibrary.com/"
    prism:ViewModelLocator.AutoWireViewModel="True"
    Title="CaseHearing" Height="300" Width="300">
<Grid>

</Grid>

如果我想转到另一个视图,我会创建新窗口并在视图模型中使用显示功能。

ViewB vB_ = new ViewB();
vB_.Show();

当我按下显示另一个表单按钮时,另一个重复的 wpf 窗口打开。我该如何控制它? 我刚刚学习了 WPF 仅 10 天。这是在视图之间导航的正确方法吗?

最佳 Rgds, df

【问题讨论】:

  • 在 MVVM 中寻找消息传递机制。
  • “我如何控制它”是什么意思?你的 Show() 方法是什么样的?
  • 控制不打开重复窗口。

标签: c# wpf xaml mvvm


【解决方案1】:

答案就在你的问题中:

我创建新窗口并使用显示功能

于是新窗口就显示出来了。 您对 view 一词感到困惑。 View 不是 WPF 中的某种对象。它只是 MVVM 概念的逻辑部分。 您操作的对象是Windowscontrolspages。 看起来您想将 WPF pages 用作数据的不同 views。 网上有很多关于 WPF pagesNavigationService 的手册 这些是您需要的关键字。

顺便说一句,回答标题中的问题:打开窗口的最佳方法是将打开的窗口包装成一些通用的WindowManager 并使用

new WindowType(){ DataContext = VM }.Show()

【讨论】:

  • 我想使用 WPF 窗口。是一样的吗?
  • 这取决于“使用”和“WPF 窗口”是什么意思。你想达到什么目标?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2011-09-21
  • 2010-11-20
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2013-11-15
相关资源
最近更新 更多