求一WPF控件中Margin属性格式验证的表达式,完整格式如下:"20,-10.5,15.5,-5"
你们懂的。
纯整数的验证可以了,如下:
^(\-|\+)?[\d]+,(\-|\+)?[\d]+,(\-|\+)?[\d]+,(\-|\+)?[\d]+$
带小数的该如何写呢?
修改后,如下:
@"^-?([\d]|(-?[\d]+)(\.[\d]+)?)+,-?([\d]|(-?[\d]+)(\.[\d]+)?)+,-?([\d]|(-?[\d]+)(\.[\d]+)?)+,-?([\d]|(-?[\d]+)(\.[\d]+)?)+$"
Margin属性的格式不是光这种完整模式的,"2", "2,2"之类的非完整模式也是合法的,并且中间也允许空格。用正则表达式判断很麻烦的。
直接用WPF自己用的ThicknessConverter判断不就可以了,用正则表达式干嘛。
自定义控件的Margin属性,格式是死的就行:"20,-10.5,15.5,-5",不要一位、两位或者带空格那么麻烦的。现在整形的可以了,就是不知道如何将整形和浮点型一起写。
ThicknessConverter这个不太会用。
@fei_fei:
很简单的,看看api的说明应该也能看出来。
static bool IsValidThicknessExpression(string exp) { try { new ThicknessConverter().ConvertFromString(exp); return true; } catch { return false; } }
@"^-?([\d]|(-?[\d]+)(\.[\d]+)?)+,-?([\d]|(-?[\d]+)(\.[\d]+)?)+,-?([\d]|(-?[\d]+)(\.[\d]+)?)+,-?([\d]|(-?[\d]+)(\.[\d]+)?)+$"