(Обратите внимание - я новичок в 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 возникают две проблемы:
В ComboBox не выбран параметр (пусто)
С этого момента привязка 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>