2015-05-19 2 views
0

У меня есть глобальный стиль для всех comboboxes в приложении. Для проверки ошибок я использую IDataErrorInfo. Поэтому, когда будет ошибка, я хочу, чтобы все текстовые поля имели такой пользовательский вид: enter image description here с различным ErrorContent (мышь должна быть над кругом, чтобы показать подсказку с информацией об ошибке). Мой стиль выпадающий является:как найти ErrorContent в Validation.ErrorTemplate

<Style x:Key="AlStyleTextBoxArial12" TargetType="{x:Type TextBox}"> 
    <Setter Property="FontFamily" Value="Arial"/> 
    <Setter Property="FontSize" Value="12pt"/> 
    <Setter Property="Margin" Value="3,3,3,3"/> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="True"> 
      <Setter Property="Validation.ErrorTemplate"> 
       <Setter.Value> 
        <ControlTemplate> 
         <DockPanel LastChildFill="True"> 
          <Grid DockPanel.Dock="Right" Margin="-23,0,0,0" Width="15" Height="15"> 
           <Grid.ToolTip> 
            <ToolTip Content="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/> 
           </Grid.ToolTip> 
           <Ellipse Fill="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> 
           <TextBlock Text="!" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White" FontSize="11pt" FontWeight="Bold" Margin="0,0,0,1"/> 
          </Grid> 
          <Border BorderBrush="Red" BorderThickness="1"> 
           <AdornedElementPlaceholder/> 
          </Border> 
         </DockPanel> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

И мой TextBox реализуется следующим образом:

<TextBox Text="{Binding Snr, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" 
              Grid.Row="3" Grid.Column="2"/> 

Вид TextBox, когда у меня есть ошибки, это нормально, но я не могу установить подсказке. Он всегда пуст. Любые идеи, почему я не могу получить ErrorContent?

ответ

0

Я изменил свой стиль к этому:

<Style x:Key="AlStyleTextBoxArial12" TargetType="{x:Type TextBox}"> 
    <Setter Property="FontFamily" Value="Arial"/> 
    <Setter Property="FontSize" Value="12pt"/> 
    <Setter Property="Margin" Value="3,3,3,3"/> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="True"> 
      <Setter Property="Validation.ErrorTemplate"> 
       <Setter.Value> 
        <ControlTemplate> 
         <DockPanel LastChildFill="True"> 
          <Grid DockPanel.Dock="Right" Margin="-23,0,0,0" Width="15" Height="15"> 
           <Grid.ToolTip> 
            <ToolTip Content="{Binding [0].ErrorContent}"/> 
           </Grid.ToolTip> 
           <Ellipse Fill="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> 
           <TextBlock Text="!" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White" FontSize="11pt" FontWeight="Bold" Margin="0,0,0,1"/> 
          </Grid> 
          <Border BorderBrush="Red" BorderThickness="1"> 
           <AdornedElementPlaceholder x:Name="customAdorner" ToolTip="{Binding [0].ErrorContent}"/> 
          </Border> 
         </DockPanel> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

и он работает в настоящее время.

Смежные вопросы