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

时间:2011-08-17 15:00:22

标签: wpf xaml

在WPF元素上简单地指定Name或x:Name属性是否有任何开销?我无法找到有关此问题的任何信息,所以答案可能不是,但我想从那些更熟悉WPF内部工作原理的人那里得到一些反馈。

如果WPF渲染引擎做任何特殊或额外的工作来准备从代码中访问该元素等,我想我想知道具有Name的元素。

1 个答案:

答案 0 :(得分: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)(目标))”仍然会在运行时创建,你就不会有“this.button1”变量指着它。