在WPF元素上简单地指定Name或x:Name属性是否有任何开销?我无法找到有关此问题的任何信息,所以答案可能不是,但我想从那些更熟悉WPF内部工作原理的人那里得到一些反馈。
如果WPF渲染引擎做任何特殊或额外的工作来准备从代码中访问该元素等,我想我想知道具有Name的元素。
答案 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”变量指着它。