2016-03-29 3 views
0

Я пытаюсь создать стиль для своих TextBox с условным стилем для его всплывающих подсказок. ToolTip должен иметь другой стиль, если свойство TextBox Validation.HasErrors истинно.Условный стиль подсказки

Я не знаю, как изменить дочерний стиль (ToolTip) из определения родительского стиля (TextBox) условным образом.

В приведенном ниже коде ToolTip Style всегда применяется.

<Style x:Key="errorStyle" TargetType="{x:Type Control}"> 
       <Style.Resources> 
        <Style TargetType="{x:Type ToolTip}"> 
         <Setter Property="Background" Value="Red"/> 
         <Setter Property="Foreground" Value="White"/> 
        </Style> 
       </Style.Resources> 
       <Setter Property="Validation.ErrorTemplate"> 
        <Setter.Value> 
         <ControlTemplate> 
          <DockPanel> 
           <Border BorderBrush="Red" BorderThickness="2" CornerRadius="2" Background="{x:Null}"> 
            <AdornedElementPlaceholder/> 
           </Border> 
          </DockPanel> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
       <Style.Triggers> 
        <Trigger Property="Validation.HasError" Value="true"> 
         <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
           Path=(Validation.Errors)[0].ErrorContent}"/> 
        </Trigger> 

       </Style.Triggers> 
</Style> 
<Style TargetType="TextBox" BasedOn="{StaticResource errorStyle}" /> 

Спасибо.

+0

вы должны делить несколько немного коды для более понять и помочь вам. – darkomen

ответ

0

Свойство ToolTip PlacementTarget можно изменить для изменения стиля всплывающей подсказки. A DataTrigger выполнит всю работу.

Это пример относительно того, что я имею в виду:

<ToolTip Content="Tooltip content..."> 
    <ToolTip.Style> 
     <Style BasedOn="{StaticResource {x:Type ToolTip}}" TargetType="{x:Type ToolTip}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, 
               Path=PlacementTarget.(Validation.HasError)}" 
           Value="True"> 
        <Setter Property="Background" Value="Red" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ToolTip.Style> 
</ToolTip> 

Я надеюсь, что это может помочь вам

+0

Это прекрасно. Благодарю. – Poeta

+0

Добро пожаловать @Poeta –

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