是否可以通过更改name属性来创建表单控件的别名

时间:2011-04-18 07:14:56

标签: c# wpf reference controls alias

假设我有一个名称为 myComboBox 的ComboBox。

现在,如果我声明另一个ComboBox引用,请说:

ComboBox curBox=new ComboBox();
curBox.Name = curCombo; // curCombo is a string whose value is myComboBox.

curBox 会不会成为别名,直接引用 myComboBox

2 个答案:

答案 0 :(得分:2)

WPF控件的name属性仅用于填充XAML标记中的name属性。它应该是唯一的,因为它提供了对您的控件的(高级)引用(您可以通过名称找到您的控件)。

在您的示例中,myComboBox和curBox是ComboBox的两个独立实例,它们只是共享相同的名称。这是不允许的,因为名称在Namescope中应该是唯一的。 See here了解有关此主题的更多信息。

答案 1 :(得分:1)

Rewinder是对的,只想添加: 在代码中设置curBox.Name不会自动将此控件添加到当前的Namescope。因此,设置它应该不是问题。要将其添加到名称范围,您可以使用RegisterName,如果“提供的名称会导致重复的名称注册”,则会ArgumentException