C# 如何告诉元素及其子元素忽略全局样式

C# 如何告诉元素及其子元素忽略全局样式,c#,wpf,xaml,visifire,C#,Wpf,Xaml,Visifire,为了在应用程序中获得通用的外观,我为所有TextBlock元素定义了一个全局样式,如下所示: MainSkin.xaml <Style TargetType="{x:Type TextBlock}"> <Setter Property="Margin" Value="5,0,5,0"/> </Style> xmlns:vc="clr-namespace:Visifire.Charts;assembly=WPFVisifire.Charts" <

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

MainSkin.xaml

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Margin" Value="5,0,5,0"/>
</Style>
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>

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

View.xaml

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Margin" Value="5,0,5,0"/>
</Style>
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>
xmlns:vc=“clr命名空间:Visifire.Charts;assembly=WPFVisifire.Charts”
通过测试,我知道
TextBlock
样式的
Margin
设置导致了这种情况。我猜在
图表
元素的某个地方,他们使用了一个
文本块
,我的风格会影响它

如何让Xaml中的图表元素及其子元素忽略全局文本块样式?

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

注意事项:

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

只需创建另一个不设置任何内容的
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>

你太棒了,这正是我需要的!非常感谢:-)