有趣的是,我看了一下ReflectionBase中的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。
Verrry確實有趣。這顯然不是我期待的。我違規的所有網格恰好嵌入在DataTemplates中,所以我直接在窗口的xaml中嘗試了它,並且也得到了XAMLParseException。加載模板時,輸出窗口中沒有任何興趣。 – Jelly
你碰巧知道在非編譯xaml模板被加載時是否應該觸發ValidateValueCallbacks?我試圖查看這個,但是我找不到任何說明不會的文檔。 – Jelly
@Jelly不,我不知道,但說實話,我不確定爲什麼這個問題不僅僅是好奇而是重要的。我的意思是......你不會用無效的角色給你的團隊命名,是嗎? – Alan