wpf - 防止 ControlTemplate 中的控件继承全局样式 (WPF)

标签 wpf styles custom-controls controltemplate inheritance

我使用此模板为自定义控件提供了通用样式。

<Style TargetType="{x:Type local:MyType}">        
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:MyType}">                    
                    <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <local:MyControl />
                    </Border>
                    ...

如果在项目中使用此控件,则此样式全局设置在哪里:

<Style  TargetType="{x:Type Border}">
    <Setter Property="Padding" Value="3" />
    <Setter Property="VerticalAlignment" Value="Top" />
</Style>

但是 MyControl 是一个普通的 UserControl ,包含: ...

<Border .. />

然后 UserControl 中的边框(位于模板中)也继承此样式(Padding 3 等)
有没有办法让ControlTemplate中的控件不继承这些全局样式? 只是提一下。这是一个通用模板

最佳答案

不确定我的理解是否正确。 做了一些解决办法,因为我有类似的情况,我的所有控件的样式全局指定并自动继承,无需 x:key 。

我必须删除某些控件的样式并为某些控件应用不同的样式。

在这种情况下,我创建了单独的样式(下面例如想要删除样式),因此只需创建空样式并在需要的任何地方和任何控件上使用。

空样式:

<Grid.Resources>
    <ResourceDictionary>
        <Style x:Key="EmptyStyle"/>
    </ResourceDictionary>
</Grid.Resources>

应用于控制:

<TextBlock Text="First Name" Style="{StaticResource EmptyStyle}" />

关于wpf - 防止 ControlTemplate 中的控件继承全局样式 (WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11326093/

相关文章:

wpf - 复制 WPF 控件上的背景颜色

c# - 具有自定义控件属性值的 WPF 自定义控件的工具提示

c# - 自定义控件的 Controls.Count 零

wpf - XAML 绑定(bind)到 ViewModel 上的 CollectionViewSource 属性

css - 如何修复CSS3灵活布局的子元素脱离父项?

wpf - 为什么在 Binding 中有效的格式字符串在 MultiBinding 中无效?

android - 无法隐藏 Nexus 7 上的标题顶部栏

android - 间隔 15 分钟的时间选择器

wpf - 有没有办法在 WPF 中创建粘性页脚?

c# - WPF 基础 : Shared global styles for MVVM