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

WPF中基于ListView创建自定义控件时找不到对应资源报错如何解决

问题原因

你遇到的报错是StaticResource的编译期资源查找特性和不同控件的默认样式加载时机差异导致的:

  • WPF中Button这类简单基础控件的默认样式,在编译阶段就已经完成加载,会被纳入静态资源查找范围,因此你自定义LargeButton时用{StaticResource {x:Type Button}}可以正常匹配到样式。
  • ListView属于复杂的ItemsControl派生控件,它的默认样式加载时机晚于Generic.xaml的编译期资源检查流程,用StaticResource在编译时查找就会找不到对应键的资源,抛出你遇到的大小写敏感提示的资源不存在错误。

解决方法

把BasedOn属性里的StaticResource改成运行时查找的DynamicResource即可,修改后的样式代码如下:

<Style TargetType="{x:Type local:MyListView}" BasedOn="{DynamicResource {x:Type ListView}}">
    <Setter Property="FontSize" Value="16"/>
    <Setter Property="Margin" Value="2"/>
</Style>

DynamicResource会在控件实际渲染的运行时阶段再查找系统的ListView默认样式,能够正常匹配到对应资源,不会再触发编译错误,你自定义的属性设置也会正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:12:01