私は今は3ページしかない小さなWPFアプリケーションを作成しています。メインページでDataTemplateとContentControlを使用して、自分のページを表示して切り替える。 (下記のコードサンプルを参照してください)。それは働いていますが、私はいくつか懸念しています:ページ間のナビゲーション
DataTemplateは、パラメータのないコンストラクタのみを使用します。私は1つを追加する場合、それはコンストラクタを見つけることができません。
「登録」は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は、パラメータなしのコンストラクタを探しているので、その後、私のアプリケーション内のナビゲーションが壊れています。
不明な質問。あなたは何を達成しようとしていますか? – AnjumSKhan
私はviewModelsのコンストラクタに別のクラスを挿入しようとしていますが、xamlの宣言ではパラメータのないコンストラクタが使用されているため、できません。私は上記のポイント1)と2)を修正する方法を探したい。 –
ビューモデルの作成は、他のビューモデル(またはアプリケーションの入力時にはアプリケーション初期化子)で処理する必要があります。あなたのすべてのビューは、どのようにレンダリングされているかを宣言しているはずです。これまでのところこれは良く見えます。あなたのVMコードの詳細を表示する - これは今あなたのための問題であると思われるので、おそらくちょうどパターンからわずかです:) – Dbl