【问题标题】:How to tell a element and its childs to ignore a global style如何告诉元素及其子元素忽略全局样式
【发布时间】:2014-08-27 08:17:18
【问题描述】:

为了在我的应用程序中获得一个共同的外观和感觉,我为我的所有 TextBlock 元素定义了一个全局样式,如下所示:

MainSkin.xaml

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Margin" Value="5,0,5,0"/>
</Style>

不幸的是,这弄乱了我使用的图表元素(来自外部 visifire 库)并剪切了一些文本元素(在屏幕截图中用红色矩形标记):

View.xaml

xmlns:vc="clr-namespace:Visifire.Charts;assembly=WPFVisifire.Charts"

<vc:Chart>
    <vc:Chart.Titles>
        <vc:Title Text="SomeTitle" />
    </vc:Chart.Titles>
    <vc:Chart.AxesX>
        <vc:Axis Title="X" TitleFontSize="12" />
    </vc:Chart.AxesX>
    <vc:Chart.AxesY>
        <vc:Axis Title="Y" TitleFontSize="12"/>
    </vc:Chart.AxesY>
</vc:Chart>

通过测试,我知道TextBlock 样式的Margin 设置导致了这种情况。我猜在Chart 元素内部的某个地方,他们使用了我的风格会影响的TextBlock

如何让 Xaml 中的 Chart 元素及其子元素忽略全局 TextBlock 样式?

我尝试将图表样式设置为空,但没有成功。

注意事项:

  • 我不想编辑图表中使用的外部源代码
  • 我不想在我的风格中使用 x:Key

【问题讨论】:

    标签: c# wpf xaml visifire


    【解决方案1】:

    只需创建另一个不设置任何内容的 TextBlock 隐式样式:

    <vc:Chart>
        <vc:Chart.Resources>
            <Style TargetType="TextBlock" />
        </vc:Chart.Resources>
    
        <vc:Chart.Titles>
            <vc:Title Text="SomeTitle" />
        </vc:Chart.Titles>
        <vc:Chart.AxesX>
            <vc:Axis Title="X" TitleFontSize="12" />
        </vc:Chart.AxesX>
        <vc:Chart.AxesY>
            <vc:Axis Title="Y" TitleFontSize="12"/>
        </vc:Chart.AxesY>
    </vc:Chart>
    

    【讨论】:

    • 你太棒了,这正是我需要的!非常感谢:-)
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多