我一直在試圖解決這個問題。 :(WPF Validation.HasError設置文本框的邊距
對於一個文本框,我有一個Validation.ErrorTemplate設置與文本框的右側的圖像,同時它有一個驗證錯誤。
這個偉大的工程!但有一兩件事我想這樣做是調整或設置邊距的文本框有錯誤,因此它適合在窗體上的文本框的空間。目前,圖像流出的文本框區域之外。
我真正想要的是帶有錯誤的文本框佔據與textbox相同的空間。
這是我的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屬性進行更改的嗎?
任何洞見將是美好的!
謝謝!