鑑於我有一個GridView,我想通過點擊每個項目導航到不同的頁面。如何將視圖與ViewModel的viewmodel或多個DataTemplates關聯?
如何導航到與視圖模型關聯的視圖?
在WPF中,有一種方法可以爲viewmodel設置多個Datatemplates。
<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>
的構架是一個網頁的一部分,我想表明基於視圖模型的價值相應的視圖。
Visual Studio告訴我DataTemplate必須有一個鍵屬性,但即使如此,它仍然不能像在WPF中那樣工作,因爲它不會創建視圖。
我知道DataType被替換爲x:DataType和x:Type似乎不見了。有沒有辦法達到類似的結果?
你有使用'ContentPresent考慮呃'顯示您的視圖模型? –
我將添加更多關於我在UWP中擁有的sitution的信息,因爲TabControl僅僅是一個示例。 – Andre
UserVoice上的這個[link]有一個線程(https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/18575131-add-implicit-datatemplates-to-uwp) – Portikus