我正在编写一个只有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正在寻找无参数构造函数。