Silverlight XAML命名空间范围

时间:2012-02-10 05:05:43

标签: .net silverlight xaml combobox

我需要在silverlight页面上动态生成一些组合框。

如果我有以下xaml:

<ComboBox Name="Combo1">
  <ComboBox.Items>
    <ComboBoxItem Name="Option1" Content="Option 1" />
    <ComboBoxItem Name="Option2" Content="Option 2" />
  </ComboBox.Items>
</ComboBox>
<ComboBox Name="Combo2">
  <ComboBox.Items>
    <ComboBoxItem Name="Option1" Content="Option 1" />
    <ComboBoxItem Name="Option2" Content="Option 2" />
  </ComboBox.Items>
</ComboBox>

我收到错误,说第二个Option1名称(在Combo2下)已存在于命名空间中。

我已经读过here这是Silverlight中的一个错误,但我不太明白如何绕过它。我需要能够从选定的ComboBox项中检索字符串Option1。

有什么想法吗?

编辑:我有一个自定义控件生成一些组合框。一些示例XAML代码如下所示:

<ComboBox Name="Combo1">
  <ComboBox.Items>
    <ComboBoxItem Name="True" Content="Yes" />
    <ComboBoxItem Name="False" Content="No" />
  </ComboBox.Items>
</ComboBox>
<ComboBox Name="Combo2">
  <ComboBox.Items>
    <ComboBoxItem Name="True" Content="Okay" />
    <ComboBoxItem Name="False" Content="Not Okay" />
  </ComboBox.Items>
</ComboBox>

我希望能够检索选定的ComboBoxItem“名称”,而不是“内容”。但是,这样做,如果任何组合框“名称”不唯一(在此控件中),我将遇到错误

1 个答案:

答案 0 :(得分:1)

您不能在XAML / Class文件中使用相同的名称两次。如果要动态生成自定义组合框,请创建模板并使用该模板动态生成自定义组合框或创建实现组合框的自定义控件。

当在xaml中执行<ComboBoxItem/>之类的操作时,它实际上是调用ComboBoxItem的构造函数来创建ComboBoxItem对象。通过给它命名,您可以使用它来引用后面代码中的对象。所以想象一下,如果在同一个类的后面代码中有两个具有相同名称的对象......编译器将不允许你这样做。

您引用的链接是一个错误,因为如果对象位于不同的类中,您应该能够使用相同的名称,因此不应存在任何命名冲突。但在你的情况下,似乎你正试图在同一个类中创建两个具有相同名称的对象。