从WPF控件中删除名称

时间:2018-08-25 21:41:37

标签: c# wpf xaml

在我的应用程序中,我希望允许用户加载多个任意XAML文件。在内部,我使用XamlReader.Load()加载XAML。

现在,某些XAML可能已命名控件,例如

<Button Name="button" ... />

如果用户不小心加载了两个定义相同名称的XAML,则会发生异常,说

  

无法注册命名对象。无法在此范围内注册重复的名称“按钮”。

所以我的下一步是在加载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());更改范围
  • 以上各项的组合

0 个答案:

没有答案