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右侧自动对齐(解决多余空白问题)相关推荐
- WPF 改进 WrapPanel 右侧填充
WPF 改进 WrapPanel 右侧填充 本文经原作者授权以原创方式二次分享,欢迎转载.分享. WPF 改进 WrapPanel 右边缘填充 作者:陈-林-赵-魏|驚鏵 原文链接[1]:https: ...
- vscode 格式化某一段代码_VSCode格式化代码功能失效的bug解决方法
VSCode格式化代码功能失效的bug解决方法 前不久我装上了 黑苹果,那么为了快速转移开发环境,我使用了VSCode(Visual Studio Code下面简称VSCode)的插件 Setting ...
- C# WPF 中用代码模拟鼠标和键盘的操作
C# WPF 中用代码模拟鼠标和键盘的操作 原文:C# WPF 中用代码模拟鼠标和键盘的操作 原文地址 C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的.但是可惜的是, ...
- python modulenotfounderror_python 服务器运行代码报错ModuleNotFoundError的解决办法
一.问题描述 一段 Python 代码在本地的 IDE 上运行正常,部署到服务器运行后,出现了 ModuleNotFoundError: No module named 'xxx" 错误. ...
- (AU/PS)Adobe Audition CC.exe -系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。
bug简直难过 报错情况:由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题. 最终解决办法 心得体会 https://blog.csdn.net/hanhanwang ...
- w ndows10玩游戏蓝屏,Win10系统玩游戏蓝屏提示代码0x0000007E的两种解决方法
win10系统已经很多用户升级了,但是还是有不少用户在使用Ghost win10系统电脑的过程中经常遇到蓝屏问题,最近有位朋友在Win10系统玩游戏时出现蓝屏代码0x0000007E,显示一大串英文, ...
- 几个常用的CSS3样式代码以及不兼容的解决办法
几个常用的CSS3样式代码以及不兼容的解决办法 原文:几个常用的CSS3样式代码以及不兼容的解决办法 border-radius实现圆角效果 1 CSS3代码: 2 3 -webkit-border- ...
- WPF在代码中创建DataTemplate时候的异常
原文:WPF在代码中创建DataTemplate时候的异常 今天写段程序用到了在代码中手动创建DataTemplate, var factory = new FrameworkElementFacto ...
- 由于找不到Qt5widgets.dll,无法继续执行代码。重新安装程序可能会解决此问题。
由于找不到Qt5widgets.dll,无法继续执行代码.重新安装程序可能会解决此问题. 由于找不到Qt5WinExtras.dll,无法继续执行代码.重新安装程序可能会解决此问题. 解决办法: 去百 ...
最新文章
- 合并果子(贪心,优先队列)
- python基本输入输出代码示例
- c 语言 string类型转换,用标准c++实现string与各种类型之间的转换
- 基于JAVA+SpringBoot+Mybatis+MYSQL的医院管理系统
- C++基本数据类型列表
- firefox启动很慢 linux_Firefox启动太慢怎么办
- Android-创建简单登陆界面
- VB基础知识之Do...Loop循环
- linux维护盘ISO,MYISO XPPE+Win10PE+porteus系统维护盘ISO量产全能版
- 如何用GoldWave生成音频的回音效果
- Jetson nano安装Google拼音输入法
- 凸优化之共轭函数(二)
- AI Gossip | 八卦人工智能的前世今生
- 飞腾cpu服务器浪潮信息,从“芯”开始飞腾 浪潮发布全国产服务器
- Android80go平台的桌面布局(带gms)
- python主函数调用格式_Python的模块与函数
- html5+ 原生标题栏添加input 输入框
- Java 16 藏刀而来,Java 8 面不改色 | 它强任它强,我用 Java 8,嘿嘿
- Android开发之漫漫长途 XIX—HTTP
- Laravel dcat-admin 用户头像显示不出的原因及解决方法