Сведения о вопросе

SOON

21:31, 1st August, 2020

Теги

wpf   listbox    

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

Просмотров: 475   Ответов: 2

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

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

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

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



  Сведения об ответе

+-*/

20:48, 27th August, 2020

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

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

Если count равен 0, что, по-видимому, соответствует false, > 0-true.


  Сведения об ответе

appple

00:59, 1st August, 2020

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

<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>


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться