Как включить элементы управления wpf через привязку данных к выбранному элементу из поля со списком - PullRequest
1 голос
/ 15 июля 2011

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

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Если вы используете MVVM, вы можете привязать SelectedItem поля со списком к свойству в вашей модели представления.

Скажите, что это ваш поле со списком:

<ComboBox ItemsSource="{Binding widgetlist}" SelectedItem="{Binding Path=selectedwidget, Mode=TwoWay}"></ComboBox>

И этоваш контроль:

<DockPanel IsEnabled="{Binding controlenabled}">
    ...
</DockPanel>

Затем в установщике selectedwidget вы можете изменить свойство controlenabled на False или True.Не забудьте уведомить, что свойство controlenabled изменилось (или, если хотите, сделать controlenabled DependencyProperty.)

В итоге у вас есть 3 свойства для привязки:

  • widgetlist, коллекция ObservableCollection или какая-либо другая коллекция, которая является источником для вашего комбинированного списка

  • selectedwidget, элемент этого типа коллекции, который изменяется нанезависимо от того, что в данный момент выбран в списке,

  • controlenabled, bool, на который смотрят другие элементы управления, чтобы определить, включены они или отключены.

Как и многие примерыв MVVM этот способ может потребовать чуть больше обдумывания и кода с самого начала, но будет гораздо более удобен в обслуживании и масштабируем позже.Например, скажем, вы хотите, чтобы некоторые дополнительные элементы управления также включали / отключали себя в соответствии с тем же сценарием.Кусок пирога: добавьте к ним IsEnabled="{Binding controlenabled}">.

0 голосов
/ 15 июля 2011

Да. Вы хотите привязать IsEnabled в целевом элементе управления, который хотите динамически включать или отключать, и использовать Преобразователь значений , чтобы преобразовать соответствующую строку или элемент из ComboBox в истинное значение для включения. *

...