2009-07-28 12 views
4

私はTextBox検証のためのWPF検証を使用しています。私はこのテンプレートを定義しました:フォーカスされていないときに表示されるWPF ErrorTemplate?

<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}" BasedOn="{StaticResource StyleTextBox}">   
     <Style.Triggers> 
      <Trigger Property="Validation.HasError" Value="true"> 
       <Setter Property="ToolTip" 
         Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
         Path=(Validation.Errors)[0].ErrorContent}"/> 
       <Setter Property="Background" Value="{StaticResource TextBox_ErrorBackgroundBrush}"/> 
       <Setter Property="BorderBrush" Value="{StaticResource TextBox_ErrorBorderBrush}"/> 
       <Setter Property="BorderThickness" Value="2"/>      
      </Trigger> 
     </Style.Triggers> 
     <Setter Property="Validation.ErrorTemplate"> 
      <Setter.Value> 
       <ControlTemplate> 
        <DockPanel> 
         <TextBlock DockPanel.Dock="Right" Foreground="Red" FontSize="20" Text="!"/> 
         <AdornedElementPlaceholder/> 
        </DockPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

TextBoxは、TabItemのフォームにあります。 すべてうまくいきますが、 '!'他のTabItemを選択すると、TextBlockが表示されたままになります。この動作は、エキスパンドが展開されるなど、多くの場合に発生します.Exclamationは常にTextBoxが表示されませんが、同じ場所に表示されたままです。

答えて

5

これは、これは一つの問題を持っている...我々は何をすべきか

<Style x:Key="ErrorTemplate" TargetType="Control"> 
    <Setter Property="Validation.ErrorTemplate"> 
     <Setter.Value> 
      <!--Set your error template in here--> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="IsVisible" Value="false"> 
      <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+2

です!いくつかのケースでは、WPFがスローし、レンダリングによって例外が発生します(コレクションにNULL値を追加できません)。私は、UserControlの中にTextBoxを持って、私はそれをキャッシュに保存し、私はキャッシュからインスタンスをリロードするときに発生します。 –

関連する問題