You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF ListView绑定ObservableCollection时出现DataTemplate类型转换错误如何解决

错误根因

你在Window.Resources中定义的键为ListViewTemplate的资源实际为ListView控件类型,而ListView.ItemTemplate属性要求接收DataTemplate类型值,强制类型转换不匹配触发异常。

修正方案

1. 调整XAML资源定义

将原本嵌套在ListView内的DataTemplate提取为独立资源:

<!-- Data Template -->
<Window.Resources>
    <DataTemplate x:Key="TestClassItemTemplate">
        <StackPanel>
            <TextBlock Text="{Binding attribute1}" />
            <TextBlock Text="{Binding attribute2}" />
            <TextBlock Text="{Binding attribute3}" />
        </StackPanel>
    </DataTemplate>
</Window.Resources>

2. 修改后台资源引用代码

调整ItemTemplate赋值逻辑,匹配正确的DataTemplate资源键:

ListView listView = new ListView();
listView.ItemsSource = TestClass.GetTestClassCollection();
listView.ItemTemplate = (DataTemplate)this.FindResource("TestClassItemTemplate");
mainGrid.Children.Add(listView);

3. 修正TestClass属性定义(必改否则绑定失效)

当前TestClass的第三个属性命名与赋值、绑定逻辑不匹配,需统一修改:

class TestClass
{
    public string attribute1 { get; set; }
    public string attribute2 { get; set; }
    // 原属性名为attribute,修正为与赋值、绑定一致的attribute3
    public string attribute3 { get; set; }
}

内容的提问来源于stack exchange,提问作者Sabina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:54:04