2016-12-22 1 views
0

Ich habe die folgende Art zu Schaltflächen in meiner Anwendung angewandtWie zeige ich eine Liste von Elementen in einem Tooltip an?

<Style x:Key="ButtonPartChooserValidation" TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"> 
    <Setter Property="Background" > 
     <Setter.Value> 
      <Binding Path="(Validation.Errors)" RelativeSource="{RelativeSource Self}"> 
       <Binding.Converter> 
        <converters:ValidationErrorsToBackgroundColorConverter/> 
       </Binding.Converter> 
      </Binding> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Validation.ErrorTemplate"> 
     <Setter.Value> 
      <ControlTemplate/> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="True"> 
      <Setter Property="ToolTip" Value="{Binding (Validation.Errors).[0].ErrorContent.Value[0], RelativeSource={x:Static RelativeSource.Self}}">      
      </Setter> 
     </Trigger> 
     <Trigger Property="Validation.HasError" Value="False"> 
      <Setter Property="ToolTip" Value="Acceptable value"/> 
      <Setter Property="Background" Value="White"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

Wenn es ein Fehler Validierung erhält die Taste einen gelben Hintergrund und ein Tooltip zeigt den ersten Eintrag in der Liste von Fehlern. Der gelbe Hintergrund ist, was ich versuche zu erreichen, aber ich möchte die vollständige Liste der Validierungsfehler anzeigen und nicht nur die erste. Ich habe folgendes versucht und einfach eine leere Liste angezeigt bekommen (nur der Trigger von oben, die Namen stimmen überein).

<Trigger Property="Validation.HasError" Value="True"> 
    <Setter Property="ToolTip"> 
     <Setter.Value> 
      <ListBox ItemsSource="{Binding (Validation.Errors).[0].ErrorContent.Value, RelativeSource={x:Static RelativeSource.Self}}"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <Label Content="{Binding ErrMsg}" /> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
     </Setter.Value> 
    </Setter> 
</Trigger> 

würde ich fast brauchen sicherlich zwei ListBox Elemente jeder der Listen in meinem Objekt angezeigt werden, aber schon jetzt kann ich nicht einmal ein an die Arbeit. Was richte ich falsch ein?

Antwort

1

Sie den Validation.Errors binden konnte Eigentum des Placement des Tooltip angehängt:

<Setter Property="ToolTip"> 
    <Setter.Value> 
     <ToolTip> 
      <ItemsControl ItemsSource="{Binding Path=PlacementTarget.(Validation.Errors), RelativeSource={RelativeSource AncestorType=ToolTip}}"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding ErrorContent}" /> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </ToolTip> 
    </Setter.Value> 
</Setter> 
+0

In meinem Fall funktioniert ein wenig besser. – PlTaylor

Verwandte Themen