我有一个非常基本的自定义控件,由标签和文本框组成。我已经使用我的控件一段时间了,没有任何问题。
我现在已经开始为我的应用程序设置样式,并将我的样式放在一个仅包含一个 ResourceDictionary 的 XAML 文件中。我的 UserControl 有以下内容:
<Style TargetType="local:LabelEdit">
<Setter Property="Background" Value="{StaticResource BackgroundBrush}" />
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}" />
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<StackPanel>
<AdornedElementPlaceholder />
<Image Source="/AJSoft.Controls;component/Resources/Icons/cross.ico" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Foreground" Value="{StaticResource ErrorForegroundBrush}" />
<Setter Property="Background" Value="{StaticResource ErrorBackgroundBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource ErrorBorderBrush}" />
</Trigger>
</Style.Triggers>
</Style>
如果我注释掉 Validation.ErrorTemplate 的 Setter,一切都会正常工作。如果 ErrorTemplate 保持不变,则显示叉号(我还没有整理好位置,但以后可能会出现......),但我的 UserControl 的 Textbox 组件不显示插入符号或接受键盘输入。我的 Window 中的其余控件按预期工作。
这里有一些屏幕截图,我故意在其中添加了一些错误的文字来展示它的外观。
即使我将那个巨大的图像更改为带有小红色“!”的文本块,也会发生同样的问题。- 图像只是为了现在的效果。
我在做什么导致问题?我是 WPF 中验证的新手...
编辑:显示的图像(大红叉)只是我所做的一个例子。即使我使用与 UserControl 一起显示的小图像,我仍然可以获得相同的效果。