根据 ListBox.SelectedIndex 在 WPF 中启用按钮
题
我有一个相当经典的 UI 情况 - 两个名为 SelectedItems
和 AvailableItems
- 这个想法是您已经选择的项目已存在 SelectedItems
, ,而可添加到的项目 SelectedItems
(IE。那里还没有的所有物品)都住在 AvailableItems
.
另外,我还有 <
和 >
按钮将当前选择从一个列表移动到另一个列表(除了双击,效果很好)。
WPF 中是否可以设置样式/触发器来根据列表框中选择的任何内容来启用或禁用移动按钮? 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>
其他提示
少代码解决方案:
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
如果 count 为 0,则似乎映射为 false,> 0 映射为 true。
不隶属于 StackOverflow