不知道红色验证边框的术语,它有一个吗?
我有一个视图模型,它不继承自IDataErrorInfo。它将int属性绑定到“数量”文本框,因此当输入字母字符时,它会得到红色验证边框。这是完美的行为。红色边框由操作系统进行样式设置,因此很合适。它不需要我继承或实现IDataErrorInfo;它是简单和自动的。
是否有一种方法可以使绑定到字符串的文本框具有相同的行为,在字符串为空(或开始为空)时变为红色。我知道我可以将它们绑定到继承自IDataErrorInfo的对象上来实现这一点,但我想知道是否存在与上述解决方案一样简单的解决方案。
我认为数量的int绑定在setter中键入字母字符时会引发异常。如果在字符串的setter中执行相同操作并将值更改为空,则可以工作,但如果它起始为空,则不会变为红色(因为setter尚未被调用),而且setter会导致Visual Studio首先跳转到调试器,而数量字段不会这样做。
这是可能的吗,还是int验证只是幸运的例外?
编辑:HB下面的解决方案完美地解决了问题,除非您正在使用带有选项卡控件的界面。请参见此SO问题进行详细说明,但简而言之:验证错误是在切换选项卡时丢弃的图层上绘制的。除非验证错误在控件上引发,而该控件位于当前未选定的选项卡上,否则有一个简单的解决方案。突然间,解决方案变得非常复杂,并且在我看来非常糟糕。
编辑:我已经决定datatrigger可能是处理这个问题最简单的方法,而且也很容易重用。
<Style x:Key="TextBoxEmptyError" TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text.Length}" Value="0">
<Setter Property="BorderBrush" Value="{StaticResource ResourceKey=SemiTransparentRedBrushKey}"/>
<Setter Property="BorderThickness" Value="2" />
</DataTrigger>
</Style.Triggers>
</Style>
ErrorTemplate
的一个实例,除此之外我不知道是否有其他适当的术语。 - H.B.