首页 > 解决方案 > UWP ListView DataTemplate 绑定

问题描述

我的视图模型

BookingTakerViewModel

有财产

public List<string> Vias {get;set;} 

我想将 ListView 与 DataTemplate 绑定,但我不知道该怎么做。这是我的代码,它在运行时抛出此错误:

 "Unable to cast object of type 'System.String' to type 'UI_Test_1.ViewModels.BookingTakerViewModel'."

我认为 x:DataType 应该引用该类,在这种情况下它是我的 Viewmodel。我认为 x:Bind Vias 是错误的,因为这是一个列表,所以不知道该怎么做。

<ListView
    Name="viasList"
    Width="300"
    BorderBrush="Black"
    BorderThickness="5"
    ItemsSource="{x:Bind viewModel.Vias, Mode=OneWay}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                  <Setter Property="MinHeight" Value="1" />
                   <Setter Property="MaxHeight" Value="15" />
            </Style>
            </ListView.ItemContainerStyle>
               <ListView.ItemTemplate>
                    <DataTemplate x:Name="dt" x:DataType="viewmodels:BookingTakerViewModel">
                        <Grid>
                            <TextBlock FontSize="14" Text="{x:Bind Vias, Mode=OneWay}" />
                        </Grid>
                    </DataTemplate>
             </ListView.ItemTemplate>
</ListView>

通孔是用数据实例化的,因此不是导致 NullReference 异常的原因。我相信 XAML 是不正确的。

标签: c#xamluwp

解决方案


可能您正在寻找这样的东西?

<ListView.ItemTemplate>
    <DataTemplate x:Name="dt" x:DataType="x:String">
        <Grid>
            <TextBlock FontSize="14" Text="{x:Bind}" />
        </Grid>
    </DataTemplate>
</ListView.ItemTemplate>

在数据模板中,上下文{x:Bind}是模板对象,它是您在 中设置的集合中的字符串项ItemsSource


推荐阅读