【问题标题】:Transitioning from View to View in WPF在 WPF 中从视图转换到视图
【发布时间】:2015-08-20 19:57:56
【问题描述】:

我已经研究 MVVM 和 WPF 几个星期了,因为我正在为另一个开发人员正在为其做后端的应用程序构建一个 UI。我没有大量的 GUI 经验,所以我只是想在进行过程中弄清楚。

我开始理解将后端代码与 UI 分开的概念,但我只能在网上找到一个简单的 MVVM Window 示例。

我正在设计的应用程序是一个 Kiosk,它根据用户输入和扫描逐步在一系列屏幕中移动。分离和设计这些过渡的好方法是什么?

例如,我有一个欢迎屏幕,等待用户扫描他们的 ID。一旦获得他们的 ID,它就会显示一个新的 Window、View 或任何您想调用的名称,要求用户确认扫描的信息并按下继续按钮。

然后它移动到用户进行选择的新屏幕,依此类推,直到再经过几个“屏幕”后,打印结果并为下一个用户重置。

网络上有没有很好的实现示例?

编辑:应用程序是全屏的。我的第一个直觉是将每个屏幕设计为一个单独的窗口,然后一个接一个地显示()它们,但这似乎很草率,我猜这不是最好的方法。

我尝试的另一件事是让每个单独的视图成为一个 UserControl 并根据步骤将它们一个接一个地加载到一个主面板中。再一次,不确定这是最好的方法。

【问题讨论】:

  • 作为用户控件的单独视图并将它们加载到一个主面板中是您必须采用的方式。但让它基于 ViewModel 加载。
  • @AbinMathew 你知道这方面的好例子吗?我仍在努力思考如何使用 ViewModel 实现这一点
  • 我没有在线示例,但我可以给出如何做的想法。

标签: c# wpf mvvm


【解决方案1】:

在您的 MainView 中添加一个内容控件,如下所示,

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

为您的不同视图创建DataTemplates,如下所示,

<DataTemplate x:Key="Viewer"  DataType="{x:Type VM:TiffImageViewerViewModel}">//ViewModel Name
        <view:TiffViewer/>//View Name
</DataTemplate>

主视图模型

public object CurrentView { get; set; }

private TiffImageViewerViewModel _TiffImageViewerViewModel;
    public TiffImageViewerViewModel TiffImageViewerViewModel
    {
        get
        {
            return _TiffImageViewerViewModel;
        }
        set
        {
            _TiffImageViewerViewModel = value;
        }
    }

创建object 并将其分配给CurrentView。 这个link 更清晰

【讨论】:

  • 所以看起来每个视图都有自己的 ViewModel,对吧?而且,TiffViewer 仍然是一个 UserControl,但是您将它作为 DataTemplate 添加到资源中,对吗?
  • TiffViewer 是一个视图,因为您有不同的视图。我将它添加到我的MainViewDataTemplate
  • stackoverflow.com/questions/19654295/wpf-mvvm-navigate-views 我也发现这个问题/答案很有用。
  • @aufty 是的,我只是在这里解释了。
  • 是的 - 这与您在上面发布的内容相同 - 只是想如果有人遇到这个问题,我会参考它作为另一个示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多