Определение пространства имен Silverlight XAML - PullRequest
0 голосов
/ 10 февраля 2012

Мне нужно динамически сгенерировать некоторые поля со списком на странице 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) уже существует в пространстве имен.

Я прочитал здесь , что это ошибка в Silverlight, но я не мог понять, как ее обойти. Мне нужно иметь возможность извлечь строку Option1 из выбранного элемента ComboBox.

Есть идеи?

РЕДАКТИРОВАТЬ: у меня есть пользовательский элемент управления, который генерирует некоторые поля со списком. Пример кода 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 "Name", а не "Content". Однако, делая это так, я столкнусь с ошибками, если какой-либо comboboxitem "Name" не уникален (в этом элементе управления) .

1 Ответ

1 голос
/ 10 февраля 2012

Вы не можете использовать одно и то же имя дважды в файле XAML / Class. Если вы хотите динамически генерировать пользовательский комбинированный список, то создайте шаблон и используйте его для динамического создания пользовательского комбинированного списка или создания пользовательского элемента управления, который реализует комбинированный список.

При выполнении таких операций, как <ComboBoxItem/> в xaml, фактически вызывается конструктор ComboBoxItem для создания объекта ComboBoxItem. Дав ему имя, вы можете использовать его для ссылки на объект внутри кода. Так что представьте, если у вас есть два объекта с одинаковыми именами в коде за одним и тем же классом ... компилятор не позволит вам сделать это.

Ссылка, на которую вы ссылались, является ошибкой, потому что у вас должно быть одинаковое имя, если объекты находятся в разных классах, поэтому не должно быть никакого конфликта имен. Но в вашем случае кажется, что вы пытаетесь создать два объекта с одинаковым именем в одном классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...