在WPF中启用按钮,具体取决于ListBox.SelectedIndex

时间:2020-03-05 18:41:05  来源:igfitidea点击:

我有一个相当经典的UI情况,两个列表框分别名为" SelectedItems"和" AvailableItems",其思想是我们已经选择的项目位于" SelectedItems"中,而可用于添加到" SelectedItems"中的项目(即尚不存在)中。

另外,我还有一个<<和>按钮,可以将当前选择从一个列表移动到另一个列表(除了双击之外,还可以正常工作)。

在WPF中是否可以设置样式/触发器来启用或者禁用"移动"按钮,具体取决于在任一ListBox中选择的内容吗? " SelectedItems"位于左侧,因此" <"按钮会将选定的" AvailableItems"移至该列表。但是,如果没有选择任何项(" AvailableItems.SelectedIndex == -1"),我希望禁用此按钮(" IsEnabled == false"),反之亦然。

是否可以直接在XAML中执行此操作,还是需要在背后的代码中创建复杂的逻辑来进行处理?

解决方案

回答

这是解决方案。

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