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

WPF DataGrid鼠标悬停事件:修改单元格绑定属性求助

解决WPF DataGrid鼠标悬停修改单元格整数值的问题

首先要确认两个核心前提,这是你之前可能忽略的点:

  • 你的数据绑定类必须实现INotifyPropertyChanged接口,否则修改属性后UI不会自动更新
  • 在MouseEnter事件中要正确获取单元格绑定的数据对象,而不是直接操作单元格控件

步骤1:给数据类添加INotifyPropertyChanged实现

这是WPF数据绑定更新UI的基础,示例代码如下:

using System.ComponentModel;
using System.Runtime.CompilerServices;

public class YourDataItem : INotifyPropertyChanged
{
    private int _targetInteger;
    // 对应你要修改的整数值属性
    public int TargetInteger
    {
        get => _targetInteger;
        set
        {
            if (_targetInteger != value)
            {
                _targetInteger = value;
                OnPropertyChanged();
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

步骤2:在XAML中给目标列的单元格绑定MouseEnter事件

针对你要修改的整数值列,给单元格添加鼠标进入事件:

<DataGrid x:Name="YourDataGrid" ItemsSource="{Binding YourDataCollection}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <!-- 其他列 -->
        <DataGridTextColumn Header="目标数值列" Binding="{Binding TargetInteger}">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <!-- 绑定鼠标进入事件 -->
                    <EventSetter Event="MouseEnter" Handler="TargetCell_MouseEnter"/>
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

步骤3:实现MouseEnter事件处理逻辑

在后台代码中获取绑定的数据对象,修改对应属性:

private void TargetCell_MouseEnter(object sender, MouseEventArgs e)
{
    var cell = sender as DataGridCell;
    if (cell == null) return;

    // 获取当前单元格绑定的数据项
    var dataItem = cell.DataContext as YourDataItem;
    if (dataItem == null) return;

    // 这里写你的修改逻辑,比如给整数值加1
    dataItem.TargetInteger += 1;
}

常见问题排查

  • 如果修改后UI没变化:检查数据类是否正确实现了INotifyPropertyChanged,属性的setter里有没有调用OnPropertyChanged
  • 如果获取不到dataItem:确认单元格的DataContext确实是你的数据类实例,可通过断点查看cell.DataContext的类型

内容的提问来源于stack exchange,提问作者Archie456

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:21:17