2016-03-29 8 views
0

Ich versuche, einen Style für meine TextBoxen mit einem bedingten Stil für seine Tooltips zu erstellen. Die QuickInfo muss einen anderen Stil haben, wenn die TextBox-Eigenschaft Validation.HasErrors wahr ist.Bedingte QuickInfo-Stil

Ich weiß nicht, wie Sie die Child-Stil (ToolTip) von Parent-Stil (TextBox) Definition auf eine bedingte Weise ändern.

Im folgenden Code wird ToolTip Style immer angewendet.

<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}" /> 

Danke.

+0

können Sie helfen, ein paar kleinen Code für mehr verstehen und helfen Ihnen teilen müssen. – darkomen

Antwort

0

Sie können die QuickInfo-Eigenschaft PlacementTarget zum Ändern des Tooltip-Stils verwenden. Eine DataTrigger erledigt den Rest der Arbeit.

Dies ist ein Beispiel in Bezug auf was ich meine:

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

Ich hoffe, dass es Ihnen

+0

Das ist in Ordnung. Vielen Dank. – Poeta

+0

Sie sind herzlich willkommen @ Poeta –