页面之间的导航

本文关键字:导航 之间 | 更新日期: 2023-09-27 18:12:06

我正在写一个只有3个页面的小WPF应用程序(目前)。我在主窗口中使用DataTemplate和ContentControl来显示和切换我的页面。(请参阅下面的代码示例)。它正在工作,但我有几个问题:

  1. DataTemplate只使用无参数构造函数。如果我加一个,它就找不到构造函数了。

  2. '注册'是在xaml中完成的,我不能使用依赖注入来链接视图和ViewModels。

问题:

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

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

<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正在寻找无参数的构造函数。

页面之间的导航

看起来我的问题已经在这篇文章中得到了很好的解释。

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