【发布时间】:2013-10-29 19:07:49
【问题描述】:
我有一个可以加载自定义主题的应用程序。在那个主题中,我有一个ListViewItem 的样式,它改变了突出显示的颜色。在应用程序中,我有一个GridView,其中包含可以双击的行,如下所示:
<UserControl.Resources>
<Style x:Key="ClickableRowStyle" TargetType="{x:Type ListViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="RowDoubleClicked" />
</Style>
</UserControl.Resources>
...
<ListView ItemsSource="{Binding DataItems}" ItemContainerStyle="{StaticResource ClickableRowStyle}">
... Set up GridRows
</ListView>
我遇到的问题是,由于上面的网格使用自己的样式,因此主题中的颜色不会被应用。
我已尝试添加 BasedOn="{StaticResource {x:Type ListViewItem}}"。如果加载了主题,这将起作用,但是,如果使用默认的 Windows 样式,我会从 StaticResourceHolder 中得到一个异常。
有没有办法从主题中获得外观(如果已加载),同时仍然能够双击网格行?
【问题讨论】:
-
你得到了什么异常。如果是 XAMLParseException,请尝试查看它的内部异常以了解确切的问题。
-
在设计器中我得到 {x:Type ListViewItem} 无法解析。
-
奇怪。您是否明确指定了
x:Key以在您的主题中设置样式。如果是,您需要在BasedOn中使用该名称 -
我没有为主题中的样式指定明确的 x:Key。仅当未加载主题时才会出现异常,因为 WPF 似乎没有默认的 ListViewItem 样式。