代码之家  ›  专栏  ›  技术社区  ›  Thomas Weller

从WPF控件中删除名称

  •  3
  • Thomas Weller  · 技术社区  · 6 年前

    在我的应用程序中,我希望允许用户加载几个任意的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());
    • 以上的组合
    0 回复  |  直到 6 年前