Добавление ComboBoxItem к проблеме ComboBox в Silverlight 4 - PullRequest
0 голосов
/ 20 апреля 2010

Я недавно обновил свое приложение Silverlight с 3 до 4. После нескольких часов удара головой о стену, пытаясь решить проблему, я сузил проблему до следующего:

У меня есть пользовательский элемент управления с ComboBox внутри. ComboBox имеет одного дочернего элемента ComboBoxItem. Пользовательский элемент управления предоставляет аксессоры get, которые возвращают объект Items ComboBox, что позволяет мне добавлять дополнительные ComboBoxItems через xaml.

В Silverlight 3 все работало нормально, однако в Silverlight 4 не работает.

Как код:

//XAML
<UserControl ... >
  <ComboBox Name="myComboBox">
    <ComboBoxItem Content="Select an Item" />
  </ComboBox>
  <!-- All my other stuff -->
</UserControl>

//Code behind
public ItemCollection ListItems
{
   get
   {
     return myComboBox.Items;
   }
}

//Implementation of User-Control
<CustomControl:UserControl ... >
  <CustomControl:UserControl.ListItems>
    <ComboBoxItem Content="Item 1" />
    <ComboBoxItem Content="Item 2" />
    <ComboBoxItem Content="Item 3" />
  </CustomControl:UserControl.ListItems>
</CustomControl:UserControl>

Как я уже говорил, все это отлично работало в Silverlight 3, но не работает в Silverlight 4.

Обходной путь, по-видимому, заключается в удалении того единственного ComboBoxItem, который находится внутри моего пользовательского элемента управления, но я надеюсь избежать этого, поскольку я хочу использовать его как элемент по умолчанию.

Любая помощь будет высоко ценится!

1 Ответ

1 голос
/ 20 апреля 2010

Парсер XAML был переписан для Silverlight 4, чтобы сделать его более совместимым с WPF. Я вполне уверен, что поведение, которое вы ожидаете, было ошибкой в ​​SL3, и я не думаю, что это сработало бы в WPF, хотя на самом деле я никогда не пробовал.

Возможно, вы сможете вернуть старый режим с помощью , включив режим причуд , но я бы не рекомендовал его. Вместо этого я бы создал ControlTemplate для поля со списком, чтобы отобразить текст «выбрать элемент», когда ничего не выбрано. Наличие этого фактического элемента в поле со списком на самом деле просто хак, который мы всегда были вынуждены делать с такими технологиями, как Windows Forms и HTML, но в Silverlight кажется, что SelectedItem быть нулевым, более уместно.

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