有趣的是,我查看了反射器中的 DefinitionBase 类和 SharedSizeGroup 属性。
它创建一个带有验证回调的依赖属性,定义如下:
SharedSizeGroupProperty = DependencyProperty.Register("SharedSizeGroup", typeof(string), typeof(DefinitionBase), new FrameworkPropertyMetadata(new PropertyChangedCallback(DefinitionBase.OnSharedSizeGroupPropertyChanged)), new ValidateValueCallback(DefinitionBase.SharedSizeGroupPropertyValueValid));
private static bool SharedSizeGroupPropertyValueValid(object value)
{
if (value == null)
{
return true;
}
string str = (string)value;
if (str != string.Empty)
{
int num = -1;
while (++num < str.Length)
{
bool flag = char.IsDigit(str[num]);
if (((num == 0) && flag) || ((!flag && !char.IsLetter(str[num])) && ('_' != str[num])))
{
break;
}
}
if (num == str.Length)
{
return true;
}
}
return false;
}
我对此进行了测试,实际上对于包含非数字、非字母、非下划线字符的任何内容,它都会返回 false。对于以数字开头的任何组,它也会返回 false。所以它似乎遵循一般的变量名规则..
我的猜测是这很可能会引发某种异常,但也许它正在被处理。你检查过输出窗口吗?
我尝试了一个无效的名称,并得到了 XAMLParseException。