标记中WPF控件的命名

标记中WPF控件的命名,wpf,Wpf,正如我在中所述,我有时直接从代码后面访问控件。如果我这样做,我会像在ControlTemplates和DataTemplates中一样给控件命名,我会给它们加上前缀PART,之后我会精确命名,例如 <TextBox Name=”PART_UserName” /> 这是针对一个通用的WPF命名方案吗?以前我使用前缀m,后跟描述 <TextBox Name=”m_userName” /> 。。因为事实上就是这样,但我不喜欢。 你怎么认为? 请注意,我不想讨论是否使

正如我在中所述,我有时直接从代码后面访问控件。如果我这样做,我会像在ControlTemplates和DataTemplates中一样给控件命名,我会给它们加上前缀PART,之后我会精确命名,例如

<TextBox Name=”PART_UserName” />

这是针对一个通用的WPF命名方案吗?以前我使用前缀m,后跟描述

<TextBox Name=”m_userName” />

。。因为事实上就是这样,但我不喜欢。 你怎么认为? 请注意,我不想讨论是否使用MVVM。有些情况我并不关心。

当您编写可以重新模板的自定义控件时,将使用模式
PART.
。这些是模板的必需部分的名称,没有这些名称,控件将无法工作。此类名称通常在C#代码中用属性声明:

因此,除非您正在编写控件模板,否则没有理由使用该命名模式。只要对你有意义,你可以随意命名你的控件

[TemplatePart(Name = "PART_TextBox", Type = typeof(TextBox))]
[TemplatePart(Name = "PART_UpButton", Type = typeof(Button))]
[TemplatePart(Name = "PART_DownButton", Type = typeof(Button))]
public class NumericUpDown : Control
{
    ...

     protected override OnApplyTemplate()
     {
         base.OnApplyTemplate();

         // Find controls in the template
         TextBox textBox = Template.FindName("PART_TextBox", this) as TextBox;
         Button upButton = Template.FindName("PART_UpButton", this) as Button;
         Button downButton = Template.FindName("PART_DownButton", this) as Button;

         // Do something with the controls...
         ...
     }

    ...
}