2016-12-22 51 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> 

我幾乎肯定會需要兩個列表框元素在我的對象,以顯示每一個列表,但截至目前,我不能連得上班。我在做什麼錯了?

回答

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