如何在UWP ListView中具有多个数据模板(x:bind)

时间:2018-10-27 23:33:25

标签: c# xaml uwp xbind

我坚持使用UWP应用,我尝试使用{x:bind}而不是旧的WPF方法{binding name}来遵循MVVM原理

但是我坚持自己的想法/发展,我试图在ListView(或GridView)中插入多个DataTemplates。

我想做这样的一个例子:

            <ListView.ItemTemplate>
                <DataTemplate x:DataType="localModels:Cars">
                    <StackPanel Orientation="Vertical">
                        <StackPanel Orientation="Vertical">
                            <TextBlock Text="Name:" />
                            <TextBox Text="{x:Bind Name}" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
                <!-- Here is the second DataTemplate which isn't allowed in UWP -->
               <DataTemplate x:DataType="localModels:Bikes">
                    <StackPanel Orientation="Vertical">
                        <StackPanel Orientation="Vertical">
                            <TextBlock Text="Name:" />
                            <TextBox Text="{x:Bind Name}" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>

如您所见,我有2个DataTemplate:ListView.ItemTemplate内的汽车和自行车。

不确定是否相关:Cars.cs是从Bike.cs父级继承。

我真的不明白为什么UWP在ListView.ItemTemplate中不接受多个DataTemplate。因为我真的希望ListView显示尽可能多的数据。

在UWP和{x:bind}中解决此问题的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用DataTemplateSelector来确定应根据您的数据类型选择哪个数据模板。 Here,您可以找到一个示例。