0
之間的導航我正在寫一個只有3頁(現在)的小型WPF應用程序。我在主窗口中使用DataTemplate和ContentControl來顯示和切換我的頁面。 (請參閱下面的代碼示例)。它的工作,但我有幾個問題:頁面導航
DataTemplate只使用無參數構造函數。如果我添加一個,那麼它找不到構造函數。
「註冊」是在xaml中完成的,我不能使用依賴注入將Views與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中尋找的參數的構造函數。
不清楚的問題。你想要達到什麼目的? – AnjumSKhan
我想在我的viewModels的構造函數中注入另一個類,但我不能'因爲xaml中的聲明使用無參數的構造函數。我想找到一種方法來解決上面列出的問題1)和2)。 –
視圖模型的創建應該由其他視圖模型(或進入應用程序時的應用程序初始化程序)來處理。你所有的觀點應該做的是宣佈它是如何呈現的。迄今爲止這看起來不錯。顯示更多的虛擬機代碼 - 你可能只是稍微偏離了模式,因爲這對你來說似乎是個問題:) – Dbl