Включение кнопки в WPF в зависимости от ListBox.SelectedIndex - PullRequest
24 голосов
/ 20 августа 2008

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

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

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

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

Ответы [ 2 ]

72 голосов
/ 18 сентября 2012

Меньше решения кода:

<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />

Если счетчик равен 0, который, по-видимому, соответствует значению false,> 0 соответствует значению true.

44 голосов
/ 20 августа 2008

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

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...