页面之间的导航
本文关键字:导航 之间 | 更新日期: 2023-09-27 18:12:06
我正在写一个只有3个页面的小WPF应用程序(目前)。我在主窗口中使用DataTemplate和ContentControl来显示和切换我的页面。(请参阅下面的代码示例)。它正在工作,但我有几个问题:
-
DataTemplate只使用无参数构造函数。如果我加一个,它就找不到构造函数了。
-
'注册'是在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模式来解决我所有的问题。