我的情况就像下面这样。
我有一个包含ListView样式的App.xaml,如下所示:
<Style x:Key="{x:Type ListViewItem}" TargetType="ListViewItem">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
...但是,我想在另一个xaml中添加一些样式,假设在Window.xaml中是这样的:
<ListView AlternationCount="2" Background="#FFECECEC">
<ListView.Resources>
<Style x:Key="{x:Type ListViewItem}" TargetType="{x:Type ListViewItem}">
<EventSetter Event="PreviewMouseDoubleClick" Handler="OnPreviewMouseDoubleClick" />
</Style>
</ListView.Resources>
</ListView>所以,我想要做的是在App.xaml中将基础设计的样式定义为默认样式。然后,添加一些修改,如添加上下文菜单,添加来自每个xaml的事件。
但是,在上面的实现中,App.xaml中定义的样式将被Window.xaml中定义的样式覆盖。
有没有办法解决这个问题并实现它?
发布于 2011-06-11 08:28:02
样式具有BasedOn属性:
<Style x:Key="Style1">
...
</Style>
<Style x:Key="Style2" BasedOn="{StaticResource Style1}">
...
</Style>顺便说一句:<Style x:Key="{x:Type ListViewItem}"看起来有点奇怪。x:Key应该是xaml字典中的唯一键--通常是一个字符串。
发布于 2012-06-28 23:00:32
如果BasedOn属性满足您的需要,那么它就是最佳选择。但是,对于更复杂的场景,像the solution referred to in this question这样的东西更灵活。
https://stackoverflow.com/questions/6313236
复制相似问题