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

StackOverflow https://stackoverflow.com/questions/17906

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня довольно классическая ситуация с пользовательским интерфейсом - два списка с именами 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top