2016-05-26 3 views
2

The ToolTip из следующего XAML показывает на красном фоне (в результате «глобальной» собственности Background стиля набор на TextBlock.Предотвратить стиль наследования

Выходец из HTML/CSS фона Я изо всех сил, чтобы увидеть, если это возможно сделать ToolTip использовать другой фон (или другие настройки для этого вопроса) без явного задания ключа пользовательских Style на каждом TextBlock внутри 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

Это хорошо, но мне все равно придется определять пользовательский стиль на каждом «Прямоугольнике», поэтому проблема такая же, мы просто перемещаем ее вверх по иерархии. – 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

Вам просто нужно переместить следующую строку:

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

<Style.Resources> к в Rectangle «s Style. Пример:

<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

Смежные вопросы