2

TextBox次のように、検証エラー メッセージを表示するためのスタイルがあります。

<Style TargetType="{x:Type TextBox}">
       <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>
       <Setter Property="Validation.ErrorTemplate">
           <Setter.Value>
               <ControlTemplate>
                   <StackPanel Orientation="Horizontal">
                       <Border BorderBrush="{Binding Path=ErrorContent, 
                               Converter={StaticResource ValidationErrorToBrushConverter}}" BorderThickness="2">
                           <AdornedElementPlaceholder />
                       </Border>
                       <Image Name="image1" Height="14" Width="14" Stretch="Fill" Margin="1,1,1,1" 
                              Source="{Binding Path=ErrorContent, 
                              Converter={StaticResource ValidationErrorToImageSourceConverter}}" 
                              ToolTip="{Binding Path=ErrorContent}"/>
                   </StackPanel>
               </ControlTemplate>
           </Setter.Value>
       </Setter>
   </Style>

TextBox住んでいExpanderます。エキスパンダーを開くと、入力はTextBox許可されますが、入力がNullorEmpty、または特殊文字を含む場合、検証に失敗します。

私の問題は、検証エラーをトリガーするTextBoxと、赤く点灯し、ツールチップとしてメッセージ付きのアイコンが表示されることです。これまでのところすべて順調です。Expanderしかし、検証に合格せずに閉じると、赤いアウトラインとツールチップ付きのアイコンがまだ残っています! Expander縮んでも!浮かんでいるだけ… これは良くない振る舞いです。

の他のすべてのコントロールと一緒に検証のものを非表示にする方法についてのアイデアはありExpanderますか? また、検証用の Style は、それ自体ではなく、UserControl のリソースで宣言されExpanderます。

4

3 に答える 3

0

私も同じ問題を抱えていました。エキスパンダーの最初の子オブジェクトとして AdornerDecorator を配置することで修正しました。Expander が折りたたまれると AdornerDecorator も折りたたまれるので、Adorners もすべて消えるはずです。

于 2016-08-01T21:02:13.417 に答える
0

Expanderを閉じると、TextBoxを単純にクリアすることになりました。そうすれば、検証エラーがなくなり、ボックスがクリアになり、エキスパンダーが再び開いたときに別の入力の準備が整います。

于 2009-09-30T21:06:18.073 に答える