2012-08-13 5 views
0

다음과 같은 유효성 검사 템플릿이 있습니다. 그러나 컨트롤의 안쪽이나 컨트롤의 왼쪽에 오류 아이콘을 설정할 수 있습니다. 당신은WPF IDataErrorInfo 아이콘 위치 오른쪽

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

       > 

<Storyboard x:Key="FlashErrorIcon"> 
    <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" 
            Storyboard.TargetProperty="(UIElement.Visibility)"> 
     <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Hidden}"/> 
     <DiscreteObjectKeyFrame KeyTime="00:00:00.2000000" Value="{x:Static Visibility.Visible}"/> 
     <DiscreteObjectKeyFrame KeyTime="00:00:00.4000000" Value="{x:Static Visibility.Hidden}"/> 
     <DiscreteObjectKeyFrame KeyTime="00:00:00.6000000" Value="{x:Static Visibility.Visible}"/> 
     <DiscreteObjectKeyFrame KeyTime="00:00:00.8000000" Value="{x:Static Visibility.Hidden}"/> 
     <DiscreteObjectKeyFrame KeyTime="00:00:01" Value="{x:Static Visibility.Visible}"/> 
    </ObjectAnimationUsingKeyFrames> 
</Storyboard> 
<Style x:Key="myErrorTemplate" TargetType="Control"> 
    <Setter Property="Validation.ErrorTemplate"> 
     <Setter.Value> 
      <ControlTemplate> 
       <DockPanel LastChildFill="True"> 
        <Ellipse DockPanel.Dock="Left" 
          ToolTip="{Binding ElementName=myTextbox, 
           Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" 
          Width="15" Height="15" 
          Margin="-25,0,0,0" 
          StrokeThickness="1" Fill="Red" > 
         <Ellipse.Stroke> 
          <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> 
           <GradientStop Color="#FFFA0404" Offset="0"/> 
           <GradientStop Color="#FFC9C7C7" Offset="1"/> 
          </LinearGradientBrush> 
         </Ellipse.Stroke> 
         <Ellipse.Triggers> 
          <EventTrigger RoutedEvent="FrameworkElement.Loaded"> 
           <BeginStoryboard Storyboard="{StaticResource FlashErrorIcon}"/> 
          </EventTrigger> 
         </Ellipse.Triggers> 
        </Ellipse> 
        <TextBlock DockPanel.Dock="Left" 
          ToolTip="{Binding ElementName=myControl, 
           Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" 
          Foreground="White" 
          FontSize="11pt" 
          Margin="-15,5,0,0" FontWeight="Bold">! 
         <TextBlock.Triggers> 
          <EventTrigger RoutedEvent="FrameworkElement.Loaded"> 
           <BeginStoryboard Storyboard="{StaticResource FlashErrorIcon}"/> 
          </EventTrigger> 
         </TextBlock.Triggers> 
        </TextBlock> 
        <Border BorderBrush="Red" BorderThickness="1"> 
         <AdornedElementPlaceholder Name="myControl"/> 
        </Border> 
       </DockPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="true"> 
      <Setter Property="ToolTip" 
        Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
        Path=(Validation.Errors)[0].ErrorContent}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
<Style TargetType="TextBox" BasedOn="{StaticResource myErrorTemplate}" /> 

답변

0

변경 템플릿 수정을 통해 오류 아이콘의 위치를 ​​내가 그것을 (오른쪽 텍스트 상자 외부와) 컨트롤의 오른쪽에 깜박 할 수있는 방법을 말해 주시겠습니까.

+0

안녕하세요, 저는 동의합니다. 나는 그것을 올바르게 설정하려했지만 컨트롤 안에 표시됩니다. – user1386121