DataGrid无数据项时无法禁用按钮,代码实现后按钮仍启用问题
问题分析与修复方案
嘿,这个问题其实一眼就能看穿——你把触发逻辑搞反啦!
核心错误点
你的需求是当DataGrid无数据(Count=0)时禁用按钮,但你在DataTrigger里写的逻辑完全相反:当myDataGrid的Count等于0时,你把按钮的IsEnabled设为True,这就导致空数据时按钮反而一直启用,和你的预期背道而驰。
修复后的代码
只需要把Setter里的Value改成False,同时建议给Style加一个默认Setter来明确正常状态下按钮是启用的,让逻辑更完整清晰:
<Button> <Button.Style> <Style TargetType="Button"> <!-- 默认状态:按钮处于启用状态 --> <Setter Property="IsEnabled" Value="True" /> <Style.Triggers> <!-- 当DataGrid数据量为0时,禁用按钮 --> <DataTrigger Binding="{Binding Count, ElementName=myDataGrid}" Value="0"> <Setter Property="IsEnabled" Value="False" /> </DataTrigger> </Style.Triggers> </Style> </Button.Style> </Button>
额外小提示
如果你的DataGrid绑定的是ObservableCollection这类自带通知的集合,Count变化时UI会自动响应;要是用的是普通集合,记得让集合所在的ViewModel实现INotifyPropertyChanged,确保数据量变化时能通知UI更新状态。
内容的提问来源于stack exchange,提问作者Magheggio
相关产品推荐
相关产品推荐

