我是WPF(4.0)的新手,我正在尝试用一些TEXTBOX和一个SUBMIT BUTTON制作一个简单的表单。
当用户点击提交按钮并且程序检查是否所有文本框都填满时,如果没有,则未填充的文本框将被"红色边框"包围。
<StackPanel>
<Border Padding>
<StackPanel Orientation="Horizontal">
<TextBox Name="name_textbox"/>
</StackPanel>
</Border>
<Border>
<StackPanel>
<Button HorizontalAlignment="Center" Margin="0">Submit</Button>
</StackPanel>
</Border>
</StackPanel>
我阅读并试图了解以下以及其他一些文档和堆栈溢出帖子,我发现有很多我无法理解的事情和术语。
https://www.codeproject.com/Articles/15239/Validation-in-Windows-Presentation-Foundation#welcome
https://www.codeproject.com/Articles/140620/WPF-Tutorial-Dependency-Property
我的问题是: 我认为与数据绑定验证有关,除此之外我还需要知道什么?
或者是否有任何好的资源推荐或快速示例?
我迷路了,希望有人可以帮忙,谢谢!
答案 0 :(得分:0)
这是我写的一个类的一部分,用于在元素失去焦点后检查验证。
在窗口中添加FocusAdvancement并将ValidationOnLostFocus设置为true。并在文本框ValidationRules中添加自定义验证。
public static class FocusAdvancement
{
public static readonly DependencyProperty ValidationOnLostFocusProperty=
DependencyProperty.RegisterAttached ("ValidationOnLostFocus",typeof (bool),typeof (FocusAdvancement),new UIPropertyMetadata (OnValidationOnLostFocusPropertyChanged));
public static bool GetValidationOnLostFocusProperty(DependencyObject d)
{
return (bool)d.GetValue (ValidationOnLostFocusProperty);
}
public static void SetValidationOnLostFocusProperty(DependencyObject d,bool value)
{
d.SetValue (ValidationOnLostFocusProperty,value);
}
private static void OnValidationOnLostFocusPropertyChanged(DependencyObject d,DependencyPropertyChangedEventArgs e)
{
var element=(UIElement)d;
if (element==null)
return;
if ((bool)e.NewValue)
{
element.LostFocus+=LostFocus;
}
else
element.GotFocus-=LostFocus;
}
private static void LostFocus(object sender,RoutedEventArgs e)
{
var element=(UIElement)sender;
if (element!=null)
{
TextBox oTextBox=(TextBox)element;
oTextBox.GetBindingExpression (TextBox.TextProperty).UpdateSource ();
}
}