相关疑难解决方法(0)

如何将视图与viewmodel关联或ViewModel的多个DataTemplates?

鉴于我有一个GridView,我想通过单击每个项目导航到不同的页面.

如何导航到与viewmodel关联的视图?

在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>
Run Code Online (Sandbox Code Playgroud)

这是我在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>
Run Code Online (Sandbox Code Playgroud)

框架是页面的一部分,我想根据ViewModel的值显示相应的视图.

Visual Studio告诉我DataTemplate必须有一个键属性,但即使这样它也不像在WPF中那样工作,因为它不是创建视图.

我知道DataType被替换为x:DataType和x:Type似乎已经消失了.有没有办法达到类似的效果?

xaml win-universal-app windows-10 uwp

10
推荐指数
1
解决办法
4783
查看次数

标签 统计

uwp ×1

win-universal-app ×1

windows-10 ×1

xaml ×1