当前位置: 首页 > 编程语言 > C#

取消选择RowDetailsTemplate后调整Datagrid高度分享

时间:2023-04-10 13:06:13 C#

C#学习教程:取消选择RowDetailsTemplate后调整Datagrid高度现在,当我选择一行来显示这个嵌套的数据网格时,数据网格的高度会扩展。但是当取消选择该行时,它不会降低其高度。折叠行详细信息后,是否可以将数据网格的大小调整为其原始高度?是否有可能以声明方式进行?使用此行为将详细信息放入StackPanel和网格:publicclassDataGridDetailResizeBehavior:Behavior{this.AssociatedObject.SizeChanged+=newSizeChangedEventHandler(Element_SizeChanged);}protectedoverrideOnDetachedvoid(){this.AssociatedObject.SizeChanged-=newSizeChangedEventHandler(Element_SizeChanged);base.OnDetaching();}privatevoidElement_SizeChanged(objectsender,SizeChangedEventArgse){//找到DataGridDetailsPresenterDataGridDetailsPresenterrowDetailed;Assenter=while(element!=null){rowDetailPresenter=elementasDataGridDetailsPresenter;如果(rowDetailPresenter!=null){中断;}元素=(FrameworkElement)VisualTreeHelper.GetParent(元素);}if(rowDetailPresenter!=null){varrow=UIHelper.GetParentOf(this.AssociatedObject);if(row!=null&&row.DetailsVisibility==Visibility.Visible){//设置高度rowDetailPresenter.ContentHeight=this.AssociatedObject.ActualHeight;}}}}并且XAML如下所示:网格项,它会导致网格重绘自身。privatevoiddgVehicles_SelectionChanged(objectsender,SelectionChangedEventArgse){DataGriddg=senderasDataGrid;如果(dg!=null){dg.Items.Refresh();}e.Handled=true;这对我有用。希望能帮到你。注意:如果您需要独立滚动嵌套的DataGrid,那么这对您不起作用。OP的问题没有提到这个细节。我意识到这是一个旧线程,但我在寻找问题的解决方案时偶然发现了它,并认为其他人可能想看看我发现了什么。我没有尝试HolaJan建议的行为方法,因为我正在寻找一种更清洁的解决方案来解决我的问题。也就是说,我确实在MSDN论坛上找到了一篇关于在DataGrid上以声明方式使用ScrollViewer.CanContentScroll="False"的帖子。我在以下位置找到了包含我的解决方案的帖子:http://social.msdn.microsoft.com/Forums/is/wpf/thread/a0e7aea8-e9ad-441f-a775-1178aab75fb0答案很明确,就是:“我似乎这是通过设置完全不相关的设置来解决的。在我的子网格中,我将ScrollViewer.CanContentScroll设置为True。一旦我在所有子网格中将其设置为False,它似乎神奇地工作。现在当我折叠我的行详细信息时适当地调整包含行的大小。》SetDataGrid.VerticalAlignment=System.Windows.VerticalAlignment.Top以上是C#学习教程:取消选中RowDetailsTemplate后,调整Datagrid的高度,共享所有内容。如果对大家有用,还需要详细了解C#学习教程,希望大家多多关照——本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如有转载转载请注明出处: