Silverlight 4 ComboBox - привязка к обнуляемым данным (пробовал TargetNullValue, но не работает должным образом) - PullRequest
0 голосов
/ 09 января 2011

(Обратите внимание - я новичок в Silverlight и ищу здесь простейшее решение, например, не включающее в себя написание / установку замены для элемента управления ComboBox!)

Это проблема приложения Silverlight 4, в котором используется подход View Model (MVVM). У меня есть простая форма для редактирования объекта «Продукт». Продукт имеет свойство CategoryID, которое может иметь значение null (int?). ComboBox используется для просмотра и установки CategoryID - это связано с ObservableCollection of Categories. Продукт также имеет ряд ненулевых свойств, связанных с текстовыми полями.

Я хочу, чтобы пользователь видел «N / A» в ComboBox для продукта без категории, и чтобы эта опция «N / A» использовалась, чтобы установить CategoryID равным нулю. Итак, я вручную добавил объект Category с CategoryID = 0 и CategoryName = "N / A" в коллекцию; затем я устанавливаю TargetNullValue = 0 в привязке SelectedValue ComboBox. Я думал так: когда ComboBox SelectedValue был привязан к нулевому CategoryID, он заменял бы ноль и поэтому выбирал параметр «N / A».

При редактировании Продукта с ненулевым CategoryID все работает. Однако при обнаружении нулевого CategoryID возникают две проблемы:

  1. В ComboBox не выбран параметр (пусто)

  2. С этого момента привязка ComboBox кажется нарушенной - любой продукт, который я впоследствии редактирую (в том числе с ненулевым CategoryID), не имеет ничего выбранного в ComboBox (он все еще заполнен всеми категориями - просто нет выбранного элемента ).

Я видел сообщения о проблеме № 2 ( здесь , здесь ), но у меня сложилось впечатление, что № 1 должен был работать.

Чего мне не хватает, чтобы выбрать опцию «N / A»?

XAML для ComboBox:

<ComboBox x:Name="cboCategory" ItemsSource="{Binding colCategories, Mode=OneWay}" SelectedValuePath="CategoryID" DisplayMemberPath="CategoryName" SelectedValue="{Binding CurrentProduct.CategoryID, Mode=TwoWay, TargetNullValue=0}" Height="24" Width="344"></ComboBox>

1 Ответ

0 голосов
/ 14 января 2011

В итоге я использовал конвертер, который преобразует значение Null в связанном объекте в ноль в ComboBox, а затем обратно ... как упомянуто здесь http://forums.silverlight.net/forums/t/195627.aspx

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