首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

WPF,输入证验

2013-08-13 
WPF,输入验证WPF中讲到的验证,是绑定的验证。是目标---源、源--目标的验证如果我只是单纯的想在TextBox中输

WPF,输入验证
WPF中讲到的验证,是绑定的验证。是目标---源、源--目标的验证

如果我只是单纯的想在TextBox中输入不大于20的数字,与绑定没有关系,那该怎么使用WPF的验证呢?这种情况比绑定似乎还要多些。并且要求验证没有通过的时候,仍然可以让边框变红、或者使用自定义的错误指示符号....
这该怎么做的呢?
[解决办法]
可以做一个虚假的绑定,比如绑定到自身:


    <StackPanel>
        <TextBox>
            <TextBox.Text>
                <Binding RelativeSource="{RelativeSource Self}" Path="Tag" UpdateSourceTrigger="PropertyChanged">
                    <Binding.ValidationRules>
                        <local:RangeRule Min="0" Max="20" />
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>
    </StackPanel>


public class RangeRule : ValidationRule
{
public int Min { get; set; }
public int Max { get; set; }

public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
int num;
if (!int.TryParse(value as string, out num) 
[解决办法]
 num < Min 
[解决办法]
 num > Max)
return new ValidationResult(false, "Please enter a number in the range: " + Min + " - " + Max + ".");
else
return new ValidationResult(true, null);


}
}


如果完全不用绑定的话,那就要在LostFocus或KeyDown/KeyUp事件中自己判断并且画出出错时的UI提示。

[解决办法]
把Text的值绑定到tag值,反正tag值一般不用。

热点排行