私はこの問題を解決するためにあらゆることを試みてきました。:(
TextBoxの場合、検証エラーが発生している間、テキストボックスの右側に画像を含むValidation.ErrorTemplateセットアップがあります。
これはうまくいきます!しかし、私がやりたいことの1つは、エラーのあるテキストボックスのマージンをサイズ変更または設定して、フォーム上のテキストボックスのスペースに収まるようにすることです。現在、画像はテキストボックス領域の外に流れています。
私が本当に欲しいのは、エラーのあるテキストボックスがエラーのないテキストボックスと同じスペースを占めることです。
これが私のXAMLスタイルです:
<Style TargetType="{x:Type TextBox}">
<Style.Resources>
<my:TextBoxWidthTransformConverter x:Key="TextBoxWidthTransformConverter"/>
</Style.Resources>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Margin" Value="{Binding Converter={StaticResource TextBoxWidthTransformConverter}, RelativeSource={RelativeSource Self}}"/>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
</Trigger>
</Style.Triggers>
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<StackPanel
Margin="{TemplateBinding Margin}"
Orientation="Horizontal"
RenderOptions.BitmapScalingMode="NearestNeighbor"
>
<AdornedElementPlaceholder
Grid.Column="1"
Grid.Row="1"
Name="controlWithError"
/>
<Border Width="2"/>
<Image
ToolTip="{Binding ElementName=controlWithError, Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent}"
Source="imagepath"
/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
何かが起こるかどうかを確認するためだけにコンバーター TextBoxWidthTransformConverter を使用していますが、以前は値に「0,0,20,0」を使用していましたが、役に立ちませんでした。コンバーターは起動せず、マージンは変更されません。Snoop を使用して、プロパティが変更または変更されているかどうかを確認しましたが、何も起こりません。
Margin は Validation.HasError プロパティで変更できないプロパティですか?
どんな洞察も素晴らしいでしょう!
ありがとう!