在WPF中,有没有一种方法可以将两个样式组合成一个控件?

7

我的情况如下。

我有一个 App.xaml,其中包含 ListView 的样式,如下所示:

<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中定义的样式覆盖。
有没有什么方法可以解决这个问题并实现它?
2个回答

11

样式具有BasedOn属性:

<Style x:Key="Style1">
...
</Style>

<Style x:Key="Style2" BasedOn="{StaticResource Style1}">
...
</Style>

顺便提一下:<Style x:Key="{x:Type ListViewItem}" 看起来有点奇怪。在XAML字典中,x:Key 应该是一个唯一的键 - 通常为字符串。


非常感谢您的快速回答。哦,没错。x:Key也很奇怪。非常感谢。 :) - Aki24x

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接