日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF 用代码实现WrapPanel右侧自动对齐(解决多余空白问题)

發布時間:2023/12/4 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF 用代码实现WrapPanel右侧自动对齐(解决多余空白问题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

未處理前效果:?

?

處理后效果:?

<Border Background="{StaticResource BorderBg}" BorderThickness="2" BorderBrush="{StaticResource BorderBrush}" CornerRadius="5" Padding="5" x:Name="SvKeyWords" Margin="142,0,134,58" Height="175" VerticalAlignment="Bottom" Visibility="Collapsed" Opacity="0.98"><ScrollViewer VerticalScrollBarVisibility="Auto" ><WrapPanel x:Name="WpKeyWords"/></ScrollViewer></Border> private void AlignWrapPanelChild(){//WrapPanel 所有子元素var lst = (from object child in WpKeyWords.Children select child as Border).ToList();if (lst.Count > 1){//每次 重置 子元素寬度foreach (var t in lst){t.Width = double.NaN;t.UpdateLayout();}for (var i = 0; i < lst.Count - 1; i++){//找到每行最后一個子元素var child = lst[i];var nxtChild = lst[i + 1];var plWidth = WpKeyWords.ActualWidth;var childPoint = child.TranslatePoint(new Point(0, 0), WpKeyWords);var nxtChildPoint = nxtChild.TranslatePoint(new Point(0, 0), WpKeyWords);if (nxtChildPoint.X < childPoint.X){//找出同一行的子元素var tempLst = lst.Where(b => b.TranslatePoint(new Point(0, 0), WpKeyWords).Y.Equals(childPoint.Y)).ToList();//算出多余的空白寬度var surplusWidth = plWidth - childPoint.X - child.Margin.Right - child.ActualWidth;var averageAddWidth = surplusWidth / tempLst.Count;//將多余的寬度平均分給當前行每個子元素foreach (var b in tempLst){b.Width = b.ActualWidth + averageAddWidth;b.UpdateLayout();}}}}}

在數據綁定或者初始化控件后調用?

private void do() {……WpKeyWords.SizeChanged += delegate { AlignWrapPanelChild(); };AlignWrapPanelChild(); }

?

總結

以上是生活随笔為你收集整理的WPF 用代码实现WrapPanel右侧自动对齐(解决多余空白问题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。