根据列表框启用WPF中的按钮,SelectedIndex

svmlkihl  于 2023-02-20  发布在  其他
关注(0)|答案(3)|浏览(201)

我有一个相当经典的UI情况-两个名为SelectedItemsAvailableItems的ListBox-其思想是,您已经选择的项位于SelectedItems中,而可添加到SelectedItems中的项(即,尚未在其中的每个项)位于AvailableItems中。
此外,我还有<>按钮,可以将当前选择从一个列表移动到另一个列表(除了双击之外,双击效果很好)。
是否可以在WPF中设置一个样式/触发器,以根据在任一列表框中选择的内容来启用或禁用移动按钮?SelectedItems位于左侧,因此<按钮会将选定的AvailableItems移动到该列表中。(AvailableItems.SelectedIndex == -1),我希望这个按钮被禁用(IsEnabled == false)-和其他列表/按钮的相反方式。
这可以直接在XAML中实现吗?还是需要在代码隐藏中创建复杂的逻辑来处理它?

vjhs03f7

vjhs03f71#

更少代码解决方案:

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

如果count为0,则似乎Map为false,〉0则Map为true。

hyrbngr7

hyrbngr72#

这是你的解决方案。

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

ojsjcaue3#

<Button IsEnabled="{Binding SelectedValue, ElementName=ListName, Mode=OneWay, TargetNullValue=0}" >Remove</Button>

在我的案例中奏效

相关问题