在我的应用程序中,我希望允许用户加载几个任意的XAML文件。在内部,我使用
XamlReader.Load()
现在,一些xaml可能已经命名了控件,例如
<Button Name="button" ... />
无法注册命名对象。无法在此作用域中注册重复的名称“button”。
因此,我的下一步是在加载XAML之前注销所有名称:
foreach (FrameworkElement child in ((Grid) Content).Children)
{
if (!string.IsNullOrEmpty(child.Name))
{
UnregisterName(child.Name);
}
}
但是,这还不够,出于同样的原因,我仍然无法加载XAML。
如何删除控件的名称?
注意:我不是在寻找解决办法。我知道我可以将XAML作为纯XML处理,删除名称,然后加载它。我真的很想知道是否以及如何能够以WPF的方式做到这一点。
我也尝试过:
-
将名称改为
child.Name = null;
-
NameScope.SetNameScope(this, new NameScope());
-
以上的组合