Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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.