首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在WPF中,有没有办法将两种样式组合成一个控件?

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

Stack Overflow用户
提问于 2011-06-11 08:22:18
回答 2查看 5.6K关注 0票数 6

我的情况就像下面这样。

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

代码语言:javascript
运行
复制
<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中是这样的:

代码语言:javascript
运行
复制
 <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中定义的样式覆盖。

有没有办法解决这个问题并实现它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-11 08:28:02

样式具有BasedOn属性:

代码语言:javascript
运行
复制
<Style x:Key="Style1">
...
</Style>

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

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

票数 10
EN

Stack Overflow用户

发布于 2012-06-28 23:00:32

如果BasedOn属性满足您的需要,那么它就是最佳选择。但是,对于更复杂的场景,像the solution referred to in this question这样的东西更灵活。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6313236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档