2016-12-28 53 views
0

我已經定義了一個風格,我希望所有我的TextBlocks到inerit我的應用程序的資源範圍內:如何停止ToolTips繼承我的TextBlock樣式?

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="Effect"> 
     <Setter.Value> 
      <DropShadowEffect BlurRadius="1" ShadowDepth="0" /> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="FontFamily" Value="Arial" /> 
    <Setter Property="FontWeight" Value="Bold" /> 
</Style> 

我不想要經過,並明確規定每個文字塊的風格 - 我只是希望所有人都能自然地繼承這種風格。

不幸的是,當我定義一個工具提示時,該工具提示也提取了這種風格。我猜這是因爲它的設計中包含了一個TextBlock的地方。

我所能做的就是不得不對每個定義的工具提示進行樣式化(因爲它們在我的應用程序中的使用較少),所以如果有某種方法來定義將覆蓋繼承的文本塊樣式的工具提示樣式,那很好。

那麼,我能做些什麼來阻止我的工具提示繼承TextBlock風格呢?

+0

在'TextBlock'上設置一個全局默認樣式是一個可怕的想法,這就是原因。只在需要的地方設置默認的「TextBlock」樣式,而不是普遍。考慮爲樣式文本實例使用'Label'而不是'TextBlock'。您可以設置填充/邊距等,使其看起來完全符合您的需要。 –

回答

1

TextBlock上設置全局隱式樣式是一個可怕的想法,這就是原因。 TextBlock是顯示文本的原語。只在需要的地方設置隱含的TextBlock樣式要好得多,而不是普遍。

或者考慮使用Label而不是TextBlock作爲樣式文本實例,並且具有隱含的Label樣式。這是爲什麼Label存在的一個原因。您可以設置填充/邊距等,使其看起來完全符合您的需要。

但是,如果你想快速,骯髒和簡單的方法來解決一個不好的決定,你可以使用祖父用於在El Alamein隆莫爾將軍隆美爾的隱式式本地化的風格把戲:

<Style TargetType="ToolTip"> 
    <Style.Resources> 
     <!-- Implicit style for TextBlocks within ToolTips --> 
     <Style TargetType="TextBlock"> 
      <Setter Property="Foreground" Value="Black" /> 
      <Setter Property="FontWeight" Value="Regular" /> 
      <Setter Property="Effect" Value="{x:Null}" /> 
     </Style> 
    </Style.Resources> 

    <Setter Property="Foreground" Value="Black" /> 
    <Setter Property="FontWeight" Value="Regular" /> 
    <Setter Property="Effect" Value="{x:Null}" /> 
</Style>