为WPF元素指定Name或x:Name属性时的开销

3

仅在WPF元素上指定Name或x:Name属性是否会产生任何开销?我很难找到相关信息,所以也许答案是否定的,但我想听听那些更熟悉WPF内部工作的人的反馈。

我想知道对于具有名称的元素,WPF渲染引擎是否会为准备从代码等处访问该元素而执行任何特殊或额外的工作。

1个回答

2

它所做的只是在生成的代码中创建对元素的引用,以便您更轻松地在代码后台引用它。例如:(来自于生成的代码文件MainWindow.g.cs,该文件将位于项目的隐藏“obj”文件夹中)

    #line 6 "..\..\..\MainWindow.xaml"
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
    internal System.Windows.Controls.Button button1;

    ...

    void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
        switch (connectionId)
        {
        case 1:
        this.button1 = ((System.Windows.Controls.Button)(target));
        return;
        }
        this._contentLoaded = true;
    }

如果您没有为其命名,则“((System.Windows.Controls.Button)(target))”仍将在运行时创建,只是您没有指向它的“this.button1”变量。

谢谢。这也是我的想法,只是想看看是否有人确认或反对。 - Joseph Gabriel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接