在标记中命名WPF控件

时间:2010-07-18 17:05:10

标签: wpf

正如我在another post中所述,我有时会直接从后面的代码中进行控制。如果我这样做,我将控件命名为ControlTemplates和DataTemplates,我给它们前缀 PART _ ,然后我精确地命名,例如......

<TextBox Name=”PART_UserName” />

这是针对常见的WPF命名方案吗?以前我使用前缀 m _ ,然后是描述...

<TextBox Name=”m_userName” />

..因为实际上它正是这个,但我不喜欢它。 你怎么看? 请注意,我不想讨论是否使用MVVM。有些情况我不在乎。

1 个答案:

答案 0 :(得分:11)

编写可重新导入的自定义控件时,将使用模式PART_<name>。这些是模板的强制部分的名称,没有它们,控件就无法工作。这些名称通常在C#代码中用[TemplatePart]属性声明:

[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...
         ...
     }

    ...
}

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