2016-12-28 12 views
0

я определил стиль в моих ресурсов приложений, которые я хочу, чтобы все мои текстовых блоков в inerit:Как я могу остановить всплывающие подсказки от наследования моего стиля 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 где-то в своем дизайне.

Что мне нужно, это пройти через и настроить каждую определенную подсказку (поскольку они используются повсеместно во всем приложении), поэтому, если есть способ определить стиль всплывающей подсказки, который переопределит унаследованный стиль текстового блока, я Это прекрасно.

Итак, что я могу сделать, чтобы остановить всплывающие подсказки от наследования стиля TextBlock?

+0

Это ужасная идея установить глобальный стиль по умолчанию на 'TextBlock', и именно поэтому. Установите стиль «TextBlock» по умолчанию только там, где это необходимо, а не повсеместно. Подумайте об использовании 'Label' вместо' TextBlock' для стилизованных экземпляров текста. Вы можете накладывать отступы/поля и т. Д., Чтобы они выглядели точно так, как вы хотите. –

ответ

1

Это ужасная идея установить глобальный неявный стиль на TextBlock, и именно поэтому. TextBlock - это примитив, отображающий текст. Гораздо лучше установить неявный стиль TextBlock только там, где это необходимо, а не повсеместно.

Или рассмотрите возможность использования Label вместо TextBlock для стилизованных текстовых экземпляров и иметь неявный стиль Label. Это одна из причин, почему существует Label. Вы можете накладывать отступы/поля и т. Д., Чтобы они выглядели точно так, как вы хотите.

Но если вы хотите быстро и грязно и легко справиться с плохим решением, вы можете использовать трюк с неявным стилем в стиле «в стиле», который дедушка использовал для обмана генерала Роммеля в Эль-Аламейне:

<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>