TextBox 및 ComboBox를 비롯한 여러 컨트롤이 있고 모두 해당 유효성 검사에 포함 된 모든 오류와 함께 도구 설명을 표시하고 싶습니다. . 오류 컬렉션. 가능하다면 그들 모두가 공통된 스타일을 공유하고 싶습니다. 이것이 제가 시도하는 것입니다. ToolTip 설정 도구에서 제 바인딩에 문제가 있다고 확신하지만 무엇을 알아 내지 못합니다. 오류 (오류 또는 경고)의 심각도를 지정하는 INotifyDataErrorInfo 구현에서 Error 객체를 반환합니다.WPF 4.5에서 INotifyDataErrorInfo를 사용하는 컨트롤에 대해 모든 Validation.Errors를 표시하는 도구 설명 만들기
그 컨트롤에 대한 모든 오류 및 경고 목록을 포함하는 툴팁을 표시하는 모든 컨트롤에 적용되는 스타일을 갖고 싶습니다. 오류는 빨간색으로 표시되고 경고는 노란색으로 표시되어야합니다. 내가 AncestorLevel 1에서 모두 제어의 AncestoryType 검색이의 2 없음 작동하는 것 같다 없습니다하는 RelativeSource를 변경 시도
<Style TargetType="FrameworkElement">
<Setter Property="ToolTip">
<Setter.Value>
<ItemsControl ItemsSource="{Binding Path=(Validation.Errors), RelativeSource={RelativeSource Self}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ErrorContent.ErrorMessage}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ErrorContent.ErrorSeverity}"
Value="{x:Static local:ErrorType.Warning}">
<Setter Property="Foreground" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=(Validation.HasError)}" Value="True">
<Setter Property="ToolTip">
<Setter.Value>
<ItemsControl ItemsSource="{Binding Path=(Validation.Errors)}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ErrorContent.ErrorMessage}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ErrorContent.ErrorSeverity}"
Value="{x:Static local:ErrorType.Warning}">
<Setter Property="Foreground" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
: 여기에 와서 한 스타일이다.
나는 ErrorTemplate에 사용했던 ControlTemplate의 스타일을 기반으로합니다. ErrorTemplate은 거의 동일한 작업을 수행합니다. 오류 심각도에 따라 빨간색 또는 노란색 경계선을 표시하고 해당 항목에 대해 정확하게 수행 한 것과 같은 툴팁을 표시합니다. 컨트롤 자체에 대한 도구 설명. ErrorTemplate이 자동으로 DataContext를 Validation.Errors 컬렉션으로 설정하여 ItmesCollection의 ItemsSource를 쉽게 바인딩 할 수 있기 때문에 내 바인딩과 관련이 있다고 확신합니다. 스타일에 대한 툴팁에는 그러한 행운이 없습니다. 여기에 내 ErrorTemplate에 사용되는 작업 ControlTemplate입니다 :
<ControlTemplate x:Key="ErrorTemplate">
<Border BorderThickness="1">
<AdornedElementPlaceholder Name="ElementPlaceholder"/>
<Border.Style>
<Style TargetType="Border">
<Setter Property="BorderBrush" Value="Red"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ElementPlaceholder, Path=AdornedElement.(Validation.Errors)[0].ErrorContent.ErrorSeverity}"
Value="{x:Static local:ErrorType.Warning}">
<Setter Property="BorderBrush" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Border.ToolTip>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ErrorContent.ErrorMessage}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ErrorContent.ErrorSeverity}"
Value="{x:Static local:ErrorType.Warning}">
<Setter Property="Foreground" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border.ToolTip>
</Border>
</ControlTemplate>
누구든지 내게 어떤 제안을 줄 수 있습니까?