页面之间的导航

时间:2016-10-08 15:51:57

标签: c# wpf xaml

我正在编写一个只有3页的小型WPF应用程序(目前)。我在主窗口中使用DataTemplate和ContentControl来显示和切换我的页面。 (参见下面的代码示例)。它有效,但我有一些顾虑:

  1. DataTemplate仅使用无参数构造函数。如果我添加一个然后它找不到构造函数。

  2. '注册'在xaml中完成,我无法使用依赖注入将视图与ViewModels链接。

  3. 问题:

    有没有办法在不使用第三方工具的情况下改变它?

    如果唯一的好选择是使用工具,我应该考虑哪些?

    <Window.Resources>
        <DataTemplate DataType="{x:Type pageViewModels:HomePageViewModel}">
            <pageViews:HomePageView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type pageViewModels:GamePageViewModel}">
            <pageViews:GamePageView />
        </DataTemplate>
    </Window.Resources>
    
    <DockPanel>
        <Border DockPanel.Dock="Left" BorderBrush="Black" BorderThickness="0,0,1,0">
            <ItemsControl ItemsSource="{Binding PageViewModels}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Button Content="{Binding Name}"
                                Command="{Binding DataContext.ChangePageCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
                                CommandParameter="{Binding }"
                                Margin="2,5"/>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Border>
    

    修改 为了澄清,我想在viewsModels的构造函数中注入一个类,但如果我这样做,那么我的应用程序中的导航就会被破坏,因为dataTemplate正在寻找无参数构造函数。

1 个答案:

答案 0 :(得分:0)

看来我的问题在post中得到了很好的解释。

简而言之,我需要实现一个ViewModelLocator模式以解决所有问题。