WPF如何实现仅当ListBox选中单个条目时才启用按钮
问题原因
- 触发器逻辑倒置:现有代码在ListBox选中条目数为0时设置按钮启用,与需求完全相反
- 场景覆盖不全:仅处理了选中数为0的情况,未覆盖选中数≥2的多选中场景
- 缺少基础状态配置:按钮默认
IsEnabled属性值为True,没有匹配到触发器规则时会始终保持启用状态
修正方案
直接在样式中设置按钮默认禁用,仅当选中条目数恰好为1时触发启用即可,完美匹配你的需求,修正后代码如下:
<Button Click="EditSingleEntryButton_Click">Edit selected <Button.Style> <Style TargetType="Button"> <!-- 基础状态默认禁用 --> <Setter Property="IsEnabled" Value="False"/> <Style.Triggers> <!-- 仅选中1个条目时启用按钮 --> <DataTrigger Binding="{Binding ElementName=entriesListBox, Path=SelectedItems.Count}" Value="1"> <Setter Property="IsEnabled" Value="True"/> </DataTrigger> </Style.Triggers> </Style> </Button.Style> </Button>
注意:不要直接在Button标签上手动设置
IsEnabled属性,WPF中本地属性赋值的优先级高于样式触发器的设置,会导致联动规则失效。
内容的提问来源于stack exchange,提问作者Justin8051
相关产品推荐
相关产品推荐

