在WPF中从视图转换到视图

时间:2015-08-20 19:57:57

标签: c# wpf mvvm

我已经研究了几个星期的MVVM和WPF,因为我正在为一个应用程序组建一个UI,而另一个开发人员正在为后端工作。我没有大量的GUI经验,所以我只是在努力解决这个问题。

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

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

例如,我有一个等待用户扫描其ID的欢迎屏幕。获得ID后,它会显示一个新的窗口或视图,或者您要调用的任何内容,要求用户确认扫描的信息并按下继续按钮。

然后它移动到用户进行选择的新屏幕等等,直到几个"屏幕"之后,结果被打印并重置为下一个用户。

网上有没有好的实施例?

编辑:该应用程序是全屏的。我的第一直觉就是将每个屏幕设计为一个单独的窗口并一个接一个地显示它们,但这看起来很草率,我猜它不是最好的方式。

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

1 个答案:

答案 0 :(得分:2)

在MainView中添加内容控件,如下所示

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

为您的不同观点创建DataTemplates,如下所示

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

MainViewModel

public object CurrentView { get; set; }

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

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