GridViewがあり、各項目をクリックして別のページに移動したいとします。ViewModelのビューをviewmodelまたは複数のDataTemplatesに関連付けるにはどうすればよいですか?
viewmodelに関連付けられたビューにナビゲートするにはどうすればよいですか?
WPFには、ビューモデルの複数のDatatemplateを設定する方法があります。
<TabControl Grid.Row="1" Margin="0" ItemsSource="{Binding Tabs}" SelectedIndex="0" SelectedItem="{Binding SelectedTab}">
<TabControl.Resources>
<DataTemplate DataType="{x:Type dashboard:DashboardViewModel}">
<dashboard:DashboardView/>
</DataTemplate>
<DataTemplate DataType="{x:Type controls:ExchangeViewModel}">
<controls:ExchangeView/>
</DataTemplate>
<DataTemplate DataType="{x:Type request:RequestViewModel}">
<request:RequestView/>
</DataTemplate>
<DataTemplate DataType="{x:Type addresses:AddressViewModel}">
<addresses:AddressView/>
</DataTemplate>
<DataTemplate DataType="{x:Type settings:ExchangeSettingsViewModel}">
<settings:ExchangeSettingsView/>
</DataTemplate>
</TabControl.Resources>
<TabControl.ItemTemplate>
<DataTemplate DataType="vm:ViewModelBase">
<TextBlock Text="{Binding Header}" FontSize="14"></TextBlock>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
これは私が私の特定のケースでUWPにしようとしたものです:
<Frame Grid.Row="1" DataContext="{x:Bind ViewModel.Value}">
<Frame.Resources>
<DataTemplate x:DataType="viewModels:ExampleViewModel1">
<views:ExampleView1></views:ExampleView1>
</DataTemplate>
<DataTemplate x:DataType="viewModels:ExampleViewModel2">
<views:ExampleView2></views:ExampleView2>
</DataTemplate>
</Frame.Resources>
</Frame>
フレームは、ページの一部であり、私はViewModelにの値に基づいて、対応するビューを表示したいです。
Visual Studioでは、DataTemplateにキー属性が必要ですが、ビューを作成していないためWPFと同じように機能しません。
私はDataTypeがx:DataTypeとx:Typeに置き換えられたことを知っています。同様の結果を達成する方法はありますか?
あなたは 'ContentPresentを使用して考えがありますあなたのビューモデルを表示するには? –
TabControlは一例に過ぎないので、私がUWPで持っているsitutionについての詳細を追加します。 – Andre
この[link]のユーザーボイスにはスレッドがあります(https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/18575131-add-implicit-datatemplates-to-uwp) – Portikus