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

WPF DataGridRow动画报错:CellsPanelHorizontalOffset赋值错误

解决WPF DataGrid新增行滑入动画的绑定错误

直接动画DataGridRow的Margin会干扰DataGrid内部的布局计算,导致CellsPanel在分配子控件(比如Button)宽度时出现负值,触发绑定错误。改用RenderTransform实现滑入动画即可避免这个问题——它只在渲染层做视觉偏移,不会影响布局测量逻辑。

修改后的动画代码

替换LoadingRow事件中的原有代码:

var sb = new Storyboard();
// 确保DataGridRow拥有TranslateTransform用于平移动画
var translateTransform = e.Row.RenderTransform as TranslateTransform;
if (translateTransform == null)
{
    translateTransform = new TranslateTransform();
    e.Row.RenderTransform = translateTransform;
}

// 创建X轴平移动画,从左侧屏幕外滑入
var slideAnimation = new DoubleAnimation()
{
    From = -dgData.ActualWidth,
    To = 0,
    Duration = new Duration(TimeSpan.FromSeconds(1)),
};

Storyboard.SetTargetProperty(slideAnimation, new PropertyPath("RenderTransform.X"));
sb.Children.Add(slideAnimation);
sb.Begin(e.Row);

原理说明

  • 原来的Margin动画会改变Row的布局占位空间,DataGrid的CellsPanel在计算内部控件宽度时,会因为负Margin导致可用空间计算异常,进而出现负值宽度赋值错误。
  • RenderTransform属于视觉变换,不影响控件的布局测量和排列流程,动画过程中内部控件的布局逻辑不受干扰,自然不会触发布局相关的绑定错误,同时保留了相同的滑入视觉效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:25:21