Включение кнопки в WPF в зависимости от ListBox.SelectedIndex
Вопрос
У меня довольно классическая ситуация с пользовательским интерфейсом - два списка с именами SelectedItems
и AvailableItems
- идея в том, что элементы, которые вы уже выбрали, живут в SelectedItems
, в то время как элементы , доступные для добавления в SelectedItems
(т.е.каждый элемент, которого там еще нет) живет в AvailableItems
.
Кроме того, у меня есть <
и >
кнопки для перемещения текущего выделенного элемента из одного списка в другой (в дополнение к двойному щелчку, который работает нормально).
Возможно ли в WPF настроить стиль / триггер для включения или отключения кнопок перемещения в зависимости от того, что выбрано в любом из списков? SelectedItems
находится с левой стороны, так что <
кнопка переместит выбранный AvailableItems
к этому списку.Однако, если элементы не выбраны (AvailableItems.SelectedIndex == -1
), я хочу, чтобы эта кнопка была отключена (IsEnabled == false
) - и наоборот для другого списка / кнопки.
Можно ли это сделать непосредственно в XAML, или мне нужно создать сложную логику в codebehind, чтобы справиться с этим?
Решение
Вот ваше решение.
<Button Name="btn1" >click me
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger
Binding ="{Binding ElementName=list1, Path=SelectedIndex}"
Value="-1">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Другие советы
Решение с меньшим количеством кода:
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
Если count равен 0, то это, по-видимому, соответствует false, > 0 - true.