C# 从WPF控件中删除该名称

C# 从WPF控件中删除该名称,c#,wpf,xaml,C#,Wpf,Xaml,在我的应用程序中,我希望允许用户加载多个任意XAML文件。在内部,我使用XamlReader.Load()加载XAML 现在,一些XAML可能已经命名了控件,例如 <Button Name="button" ... /> 但是,这还不够,出于同样的原因,我仍然无法加载XAML 如何删除控件的名称? 注意:在对此进行研究的过程中,我发现了“如何通过名称删除控件”这一问题的许多答案。那不是我想要的。我想保留控件,但取消命名 注意:我不是在寻找解决办法。我知道我可以将XAML作为普通XM

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

现在,一些XAML可能已经命名了控件,例如

<Button Name="button" ... />
但是,这还不够,出于同样的原因,我仍然无法加载XAML

如何删除控件的名称?

注意:在对此进行研究的过程中,我发现了“如何通过名称删除控件”这一问题的许多答案。那不是我想要的。我想保留控件,但取消命名

注意:我不是在寻找解决办法。我知道我可以将XAML作为普通XML处理,删除名称,然后加载它。我真的很想知道是否以及如何以WPF的方式做到这一点

我也尝试过:

  • 使用
    child.name=null更改名称
  • 使用
    NameScope.SetNameScope(这是新的NameScope())更改作用域
  • 上述各项的组合

我无法对此进行重新编程。如果我不调用RegisterName,控件的Name属性将为null,即使它在XAML字符串中有一个值,因此可以在不引发异常的情况下再次加载/添加到网格中。所以你应该给RegisterName打电话,对吗?@kennyzx:的确,你是对的。它会导致与表单上的一个按钮发生冲突,而不是在我加载的XAML的按钮之间发生冲突。我需要更新我的问题。
foreach (FrameworkElement child in ((Grid) Content).Children)
{
    if (!string.IsNullOrEmpty(child.Name))
    {
        UnregisterName(child.Name);
    }
}