33

我有一个相当经典的 UI 情况 - 两个 ListBoxes 命名为SelectedItems-AvailableItems想法是您已经选择SelectedItems的项目SelectedItems存在于AvailableItems.

另外,我有<>按钮可以将当前选择从一个列表移动到另一个列表(除了双击,效果很好)。

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

这可以直接在 XAML 中完成,还是我需要在代码隐藏中创建复杂的逻辑来处理它?

4

2 回答 2

82

少代码解决方案:

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

如果 count 为 0 似乎映射为 false,> 0 映射为 true。

于 2012-09-18T11:25:55.410 回答
52

这是您的解决方案。

<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>
于 2008-08-20T14:00:19.337 回答