Учитывая, что у меня есть GridView, и я хочу перейти на другую страницу, щелкнув каждый элемент.Как связать представление с помощью viewmodel или нескольких DataTemplates для ViewModel?
Как перейти к представлению, связанному с viewmodel?
В WPF существует способ установить несколько Datatemplates для viewmodel.
<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: Тип кажется ушедшим. Есть ли способ добиться аналогичных результатов?
Рассматривали ли вы с помощью 'ContentPresent er' для отображения вашей модели просмотра? –
Я собираюсь добавить дополнительную информацию о сатите, который у меня есть в UWP, потому что TabControl - пример. – Andre
Существует поток на UserVoice для этой [link] (https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/18575131-add-implicit-datatemplates-to-uwp) – Portikus