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

强制调整ListView中GridView列的大小分享

时间:2023-04-10 19:37:18 C#

强制调整ListView中GridView列的大小我有一个带有GridView的ListViewWPF控件。我想在列内容更改时调整GridView列的大小。我有几个不同的数据集,但是当我从一个数据集更改为另一个数据集时,每列的大小都会调整为适合以前的数据。我想动态更新。我怎样才能做到这一点?最后,关于这个的一些结果。我找到了一种执行相同自动调整的方法,即最初完成时以及双击列标题上的夹具时。publicvoidAutoSizeColumns(){GridViewgv=listView1.ViewasGridView;if(gv!=null){foreach(varcingv.Columns){//在GridViewColumnHeader.OnGripperDoubleClicked()事件处理程序中找到以下代码(使用Reflector)//即它与抓取器执行的代码相同被双击if(double.IsNaN(c.Width)){c.Width=c.ActualWidth;}c.Width=double.NaN;}}}基于Oskar的回答,这里有一个混合行为,当内容改变时自动调整列的大小。//////一个自动将ListView的自动列调整为新内容的实现。///publicclassGridViewColumnResizeBehaviour:Behavior{//////监听集合何时发生变化。///protectedoverridevoidOnAttached(){base.OnAttached();varlistView=AssociatedObject;如果(listView==null)返回;添加处理程序(listView.Items);}privatevoidAddHandler(INotifyCollectionChangedsourceCollection){Contract.Requires(sourceCollection!=null);sourceCollection.CollectionChanged+=OnListViewItemsCollectionChanged;}privatevoidRemoveHandler(INotifyCollectionChangedsourceCollection){Contract.Requires(sourceCollection!=null);sourceCollection.CollectionChanged-=OnListViewItemsCollectionChanged;}privatevoidOnListViewItemsCollectionChanged(objectsender,NotifyCollectionChangedEventArgsnotifyCollectionChangedEventArgs){varlistView=AssociatedObject;如果(listView==null)返回;vargridView=listView.ViewasGridView;如果(gridView==null)返回;//如果列自动调整大小,更改列宽以重新应用自动宽度=空);column.Width=column.ActualWidth;column.Width=Double.NaN;}}//////当集合改变时停止监听。///protectedoverridevoidOnDetaching(){varlistView=AssociatedObject;如果(listView!=null)RemoveHandler(listView.Items);base.OnDetaching();如果像我一样,你老了,更喜欢VB.NET,那么这是Oskars的代码:PublicSubAutoSizeColumns()DimgvAsGridView=TryCast(Me.listview1.View,GridView)cAsGridViewColumnIngv.ColumnsIfDouble.IsNaN(c.Width)Thenc.Width=c.ActualWidthEndIfc.Width=Double.NaNNextEndIfEndSub这在WPF中效果很好,终于有人解决了这个问题谢谢奥斯卡。有没有办法绑定到列的ActualWidth?类似的东西:我试过这个,但它似乎只在第一次起作用。没有绑定错误。您可以测量最长的字符串(以像素为单位),然后相应地调整列宽:Graphicsgraphics=this.CreateGraphics();SizeFtextSize=graphics.MeasureString("我有多长?",this.Font);如果您创建一个算法来确定每列的大小作为这些长度的比率,您应该会得到一个好的结果。以上就是C#学习教程:强制调整ListView中GridView列的大小。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: