2016-05-26 69 views
2

從以下XAML的ToolTip用紅色背景顯示(作爲「全球」 Background樣式屬性上TextBlock設置的結果。防止風格的傳承

從HTML/CSS背景我掙扎,即將看看是否有可能使ToolTip使用不同的背景(或任何其他自定義爲此事)沒有明確設置在每個TextBlock定製Style鍵內ToolTip

<StackPanel> 
    <StackPanel.Resources> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="Background" Value="Red"></Setter> 
     </Style> 
     <Style TargetType="{x:Type Rectangle}"> 
      <Setter Property="TextBlock.Background" Value="Green"></Setter> 
      <Setter Property="Width" Value="20"></Setter> 
      <Setter Property="Height" Value="20"></Setter> 
      <Setter Property="Fill" Value="Yellow"></Setter> 
     </Style> 
    </StackPanel.Resources> 
    <TextBlock>Hello World</TextBlock> 
    <Rectangle> 
     <Rectangle.ToolTip> 
      <TextBlock>My Tooltip</TextBlock> 
     </Rectangle.ToolTip> 
    </Rectangle> 
</StackPanel> 
+0

您可以爲工具提示定義默認樣式嗎? – Dennis

+0

@ Dennis是的,但我不認爲這會改變工具提示中的TextBlock的繼承風格? – maxp

回答

1

您可以添加空的樣式爲TextBlock到矩形的資源,像這樣:

<Rectangle> 
    <Rectangle.Resources> 
     <Style TargetType="TextBlock" /> 
    </Rectangle.Resources> 
    <Rectangle.ToolTip> 
     <TextBlock>My Tooltip</TextBlock> 
    </Rectangle.ToolTip> 
</Rectangle> 

如果要適用於所有的矩形 - 這樣做,在你的矩形風格:

<StackPanel> 
    <StackPanel.Resources> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="Background" 
        Value="Red"></Setter> 
     </Style> 
     <Style TargetType="{x:Type Rectangle}"> 
      <Style.Resources> 
       <Style TargetType="TextBlock" /> 
      </Style.Resources> 
      <Setter Property="TextBlock.Background" 
        Value="Green"></Setter> 
      <Setter Property="Width" 
        Value="20"></Setter> 
      <Setter Property="Height" 
        Value="20"></Setter> 
      <Setter Property="Fill" 
        Value="Yellow"></Setter> 
     </Style> 
    </StackPanel.Resources> 
    <TextBlock>Hello World</TextBlock> 
    <Rectangle> 
     <Rectangle.ToolTip> 
      <TextBlock>My Tooltip</TextBlock> 
     </Rectangle.ToolTip> 
    </Rectangle> 
</StackPanel> 
+0

這很好,但我仍然必須在每個「矩形」上定義一個自定義樣式,所以問題是一樣的,我們只是在層次結構上將它移動+1。 – maxp

+0

@maxp看到我的更新。 – Evk

0

我是正確的,要設置自定義Background或其他屬性爲各種ToolTip's?如果這是你想要的,讓我給個例子:

<Rectangle> 
     <Rectangle.ToolTip> 
      <ToolTip> 
       <ToolTip.Style> 
        <Style TargetType="ToolTip" BasedOn="{StaticResource {x:Type ToolTip}}"> 
         <Setter Property="Background" Value="Red" /> 
        </Style> 
       </ToolTip.Style> 
       <TextBlock>My Tooltip</TextBlock> 
      </ToolTip> 
     </Rectangle.ToolTip> 
    </Rectangle> 
1

你只需要移動以下行:在RectangleStyle

<Setter Property="TextBlock.Background" Value="Green"></Setter> 

<Style.Resources>。像這樣:

<StackPanel.Resources> 
    <Style TargetType="{x:Type TextBlock}"> 
     <Setter Property="Background" Value="Red"></Setter> 
    </Style> 
    <Style TargetType="{x:Type Rectangle}"> 
     <Style.Resources> 
      <Style TargetType="TextBlock" > 
       <Setter Property="Background" Value="Green"></Setter> 
      </Style> 
     </Style.Resources> 

     <Setter Property="Width" Value="20"></Setter> 
     <Setter Property="Height" Value="20"></Setter> 
     <Setter Property="Fill" Value="Yellow"></Setter> 
    </Style> 
</StackPanel.Resources> 
+0

謝謝,這就是我正在尋找的東西(我正在尋找' maxp