2016-12-22 8 views
0

私は自分のアプリケーション内のボタンに適用される次のスタイルを持っているツールチップ内にアイテムリストを表示するにはどうすればいいですか?

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

そこにボタンが黄色の背景を取得し、検証エラーがあると、ツールチップがエラーのリストの最初の項目が表示されます。黄色の背景が私が達成しようとしているものですが、最初のものだけでなく、検証エラーの完全なリストを表示したいと思います。私は以下を試して、空のリストを表示しました(簡潔さのために上のトリガー、名前の一致)。

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

私はほぼ確実に私のオブジェクト内のリストのそれぞれを表示するために2つのListBox要素が必要になりますが、今のように私は一つでも動作させることはできません。私は何を間違って設定していますか?

答えて

1

あなたがツールチップのPlacementTargetの添付プロパティをValidation.Errorsに特異的に結合することができます:

<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

私の場合は、が少し作品より良い。 – PlTaylor

関連する問題