Включение кнопки в WPF в зависимости от ListBox.SelectedIndex

У меня довольно классическая ситуация с пользовательским интерфейсом - два ListBoxes с именами SelectedItems и AvailableItems - идея состоит в том, что элементы, которые вы уже выбрали, живут, в SelectedItems то время как элементы, которые доступны для добавления SelectedItems (то есть каждый элемент, которого там еще нет), живут AvailableItems .

Кроме того , у меня есть < и > кнопки для перемещения текущего выделения из одного списка в других (в дополнении к двойному щелчку, который работает отлично).

Возможно ли в WPF настроить стиль / триггер для включения или отключения кнопок перемещения в зависимости от того, что выбрано в ListBox? SelectedItems находится слева, поэтому < кнопка переместит выделенное AvailableItems в этот список. Однако, если ни один элемент не выбран ( AvailableItems.SelectedIndex == -1 ), я хочу, чтобы эта кнопка была отключена ( IsEnabled == false ) - и наоборот для другого списка / кнопки.

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

Ответов (2)

Решение

Вот ваше решение.

<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}" />

Если счетчик равен 0, что похоже на ложь,> 0 на истину.