2010-06-23 153 views
6

我想爲我的WPF應用創建自定義驗證模板。WPF自定義驗證工具提示

我有一個提示模板:

<ControlTemplate x:Key="ToolTipTemplate" TargetType="ToolTip"> 
     <Grid Opacity="0.93" MaxWidth="200"> 
      <Border BorderBrush="Black" BorderThickness="1,1,1,1" CornerRadius="2"> 
       <Border.Background> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FFF5FAFE" Offset="0"/> 
         <GradientStop Color="#FFE5EFF9" Offset="1"/> 
        </LinearGradientBrush> 
       </Border.Background> 
       <Border.Effect> 
        <DropShadowEffect Color="#FF393939" /> 
       </Border.Effect> 
       <TextBlock Margin="10,10,10,10" 
        VerticalAlignment="Top" 
        TextWrapping="Wrap" 
        HorizontalAlignment="Left" 
        Text="{TemplateBinding Content}"> 
       </TextBlock> 
      </Border> 
     </Grid> 
    </ControlTemplate> 

另一個模板進行驗證:

<ControlTemplate x:Key="GlobalErrorTemplate"> 
     <DockPanel> 
      <Ellipse x:Name="PART_icon" 
       DockPanel.Dock="Right" 
       Margin="2,0" 
       Width="10" Height="10"> 
       <Ellipse.Fill> 
        <LinearGradientBrush> 
         <GradientStop Color="#11FF1111" Offset="0" /> 
         <GradientStop Color="#FFFF0000" Offset="1" /> 
        </LinearGradientBrush> 
       </Ellipse.Fill> 
       <Ellipse.ToolTip> 
        <ToolTip Template="{StaticResource ToolTipTemplate}" />       
       </Ellipse.ToolTip> 
      </Ellipse> 
      <AdornedElementPlaceholder x:Name="adorner" /> 
     </DockPanel> 
    </ControlTemplate> 

而對於控制方式,如:

<Style TargetType="TextBox"> 
     <Setter Property="Validation.ErrorTemplate" Value="{StaticResource GlobalErrorTemplate}"/> 
     <!--<Style.Triggers> 
      <Trigger Property="Validation.HasError" Value="True"> 
       <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" /> 
      </Trigger> 
     </Style.Triggers>--> 
    </Style> 

如何設置的提示的橢圓到(Validation.Errors)[0] .ErrorContent

感謝, 沃爾瑪

回答

7

的ErrorTemplate的DataContext的是已經Validation.Errors的價值,所以你可以定義你的提示爲:

<ToolTip Template="{StaticResource ToolTipTemplate}" Content="{Binding Path=[0].ErrorContent}" />