2016-07-13 4 views
0

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

Моя проблема заключается в том, что я хочу изменить видимость определенных элементов, когда они выбраны в другом списке. У меня есть два комбинированных блока ввода портов, и когда я выбираю порт 5, скажем, на первом, я хочу, чтобы порт 5 не отображался в раскрывающемся списке для второго поля со списком.

Я пробовал это решение How to set combox item visibility?, поскольку он выглядел очень многообещающим, но он не позволит мне отличать от string до ComboBoxItem в коде.

Что мне еще делать? Я думал о создании стиля в самой XAML, но я не могу полностью понять условия использования в XAML и не могу найти никаких тем. Наконец, у меня также есть условия в сеттерах для моих свойств ввода, чтобы проверить, что значение, заданное портом, не совпадает с другим портом, но это не похоже на что-либо для представления.

+2

Этот вопрос слишком широк. Возможно, вы хотите настроить исходную коллекцию. Возможно, вы хотите установить флаг видимости. ИМХО лучшим подходом, вероятно, является наличие флага в модели представления, а затем использование фильтрационного представления в качестве исходной коллекции. Но невозможно точно знать, что было бы правильно в вашем сценарии без хорошего [mcve], который четко показывает, что вы пробовали, и четкое, подробное объяснение того, что _специфическая проблема, с которой вы столкнулись, чтобы заставить код работать. –

ответ

0

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

Смежные вопросы