Включение кнопки в WPF в зависимости от ListBox.SelectedIndex
У меня довольно классическая ситуация с пользовательским интерфейсом - две ListBoxes с именем SelectedItems
и AvailableItems
- идея состоит в том, что элементы, которые вы уже выбрали, живут в SelectedItems
, а элементы, доступные для добавления в SelectedItems
(т.е. каждый элемент, который еще не существует) живут в AvailableItems
.
Кроме того, у меня есть кнопки <
и >
для перемещения текущего выделения из одного списка в другой (в дополнение к двойному щелчку, который отлично работает).
Возможно ли в WPF настроить стиль/триггер для включения или отключения кнопок перемещения в зависимости от того, что выбрано в ListBox? SelectedItems
находится с левой стороны, поэтому кнопка <
переместит выбранный AvailableItems
в этот список. Однако, если элементы не выбраны (AvailableItems.SelectedIndex == -1
), я хочу, чтобы эта кнопка была отключена (IsEnabled == false
) - и наоборот для другого списка /.
Возможно ли это сделать непосредственно в XAML или мне нужно создать сложную логику в коде для обработки?
Ответы
Ответ 1
Здесь ваше решение.
<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>
Ответ 2
Меньшее решение для кода:
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
Если count равен 0, то, как представляется, отображается значение false, > 0 - true.