不知道红色验证边框的术语,是否有一个?
我有一个不继承自IDataErrorInfo的viewmodel。它将int属性绑定到“数量”文本框,以便在输入字母字符时获取红色验证边框。这是完美的行为。红色边框由操作系统设计,因此适合。它不要求我继承或实现IDataErrorInfo;这很简单,也很自动。
是否有办法为绑定到字符串的texbox获取相同的行为,当字符串为空(或开始为空)时变为红色。我知道我可以将它们绑定到一个继承自IDataErrorInfo的对象来执行此操作,但我想知道是否存在与上述解决方案一样简单的解决方案。
我认为当你输入字母字符时,int绑定数量会在setter中引发异常。如果将值更改为空,则在字符串的setter中执行相同操作,但如果它开始为空则不是红色(因为没有调用setter),并且setter导致visual studio跳转到首先是调试器,数量字段不起作用。
这是可能的,还是int验证只是一个幸运的例外?
编辑:HB的解决方案完美无缺,除非您正在使用带tabcontrol的界面。有关详细说明,请参阅此SO question,但这里有它的缺点:验证错误被绘制在切换选项卡时被丢弃的图层上。有一个简单的解决方案,除非在控件上出现验证错误,而它位于当前未选中的选项卡上。突然之间,解决方案变得非常复杂,而且在我看来,非常苛刻。
编辑:我已经确定数据触发器可能是处理此问题的最简单方法,而且它也很容易重复使用。
<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>