You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:22:26