c# - UWP ListView 数据模板绑定(bind)

标签 c# xaml uwp

我的 View 模型

BookingTakerViewModel

拥有特性

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

我想将 ListView 与 DataTemplate 绑定(bind),但我不知道如何做到这一点。这是我的代码,它在运行时抛出此错误:

 "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 不正确。

最佳答案

您可能正在寻找类似的东西?

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

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

关于c# - UWP ListView 数据模板绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53237837/

相关文章:

c# - 字符串 = 字符串 + 整数 : What's behind the scenes?

c# - 如何使用 Windows 和/或 PowerShell 使用的接口(interface)和/或方法创建类库?

c# - 尝试在 WPF 中设置样式按钮的背景颜色时出现 InvalidOperationException

c# - wpf绑定(bind)问题

uwp - 如何在 UWP 中的 ToggleSwitch 的 Header 字段中包装文本

keyboard - UWP 虚拟键盘将内容向上推

c# - 文字将替换标题栏中的实际文字

c# - 在 C# 中,您能否将一个委托(delegate)的结果链接为另一个委托(delegate)的输入?

c# - WPF DataGrid 行标题可见性错误

c# - UWP 无法激活 Windows 应用商店应用程序错误 : the app didn't start