未处理前效果:

处理后效果:

<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右侧自动对齐(解决多余空白问题)相关推荐

  1. WPF 改进 WrapPanel 右侧填充

    WPF 改进 WrapPanel 右侧填充 本文经原作者授权以原创方式二次分享,欢迎转载.分享. WPF 改进 WrapPanel 右边缘填充 作者:陈-林-赵-魏|驚鏵 原文链接[1]:https: ...

  2. vscode 格式化某一段代码_VSCode格式化代码功能失效的bug解决方法

    VSCode格式化代码功能失效的bug解决方法 前不久我装上了 黑苹果,那么为了快速转移开发环境,我使用了VSCode(Visual Studio Code下面简称VSCode)的插件 Setting ...

  3. C# WPF 中用代码模拟鼠标和键盘的操作

    C# WPF 中用代码模拟鼠标和键盘的操作 原文:C# WPF 中用代码模拟鼠标和键盘的操作 原文地址 C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的.但是可惜的是, ...

  4. python modulenotfounderror_python 服务器运行代码报错ModuleNotFoundError的解决办法

    一.问题描述 一段 Python 代码在本地的 IDE 上运行正常,部署到服务器运行后,出现了 ModuleNotFoundError: No module named 'xxx" 错误. ...

  5. (AU/PS)Adobe Audition CC.exe -系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。

    bug简直难过 报错情况:由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题. 最终解决办法 心得体会 https://blog.csdn.net/hanhanwang ...

  6. w ndows10玩游戏蓝屏,Win10系统玩游戏蓝屏提示代码0x0000007E的两种解决方法

    win10系统已经很多用户升级了,但是还是有不少用户在使用Ghost win10系统电脑的过程中经常遇到蓝屏问题,最近有位朋友在Win10系统玩游戏时出现蓝屏代码0x0000007E,显示一大串英文, ...

  7. 几个常用的CSS3样式代码以及不兼容的解决办法

    几个常用的CSS3样式代码以及不兼容的解决办法 原文:几个常用的CSS3样式代码以及不兼容的解决办法 border-radius实现圆角效果 1 CSS3代码: 2 3 -webkit-border- ...

  8. WPF在代码中创建DataTemplate时候的异常

    原文:WPF在代码中创建DataTemplate时候的异常 今天写段程序用到了在代码中手动创建DataTemplate, var factory = new FrameworkElementFacto ...

  9. 由于找不到Qt5widgets.dll,无法继续执行代码。重新安装程序可能会解决此问题。

    由于找不到Qt5widgets.dll,无法继续执行代码.重新安装程序可能会解决此问题. 由于找不到Qt5WinExtras.dll,无法继续执行代码.重新安装程序可能会解决此问题. 解决办法: 去百 ...

最新文章

  1. 合并果子(贪心,优先队列)
  2. python基本输入输出代码示例
  3. c 语言 string类型转换,用标准c++实现string与各种类型之间的转换
  4. 基于JAVA+SpringBoot+Mybatis+MYSQL的医院管理系统
  5. C++基本数据类型列表
  6. firefox启动很慢 linux_Firefox启动太慢怎么办
  7. Android-创建简单登陆界面
  8. VB基础知识之Do...Loop循环
  9. linux维护盘ISO,MYISO XPPE+Win10PE+porteus系统维护盘ISO量产全能版
  10. 如何用GoldWave生成音频的回音效果
  11. Jetson nano安装Google拼音输入法
  12. 凸优化之共轭函数(二)
  13. AI Gossip | 八卦人工智能的前世今生
  14. 飞腾cpu服务器浪潮信息,从“芯”开始飞腾 浪潮发布全国产服务器
  15. Android80go平台的桌面布局(带gms)
  16. python主函数调用格式_Python的模块与函数
  17. html5+ 原生标题栏添加input 输入框
  18. Java 16 藏刀而来,Java 8 面不改色 | 它强任它强,我用 Java 8,嘿嘿
  19. Android开发之漫漫长途 XIX—HTTP
  20. Laravel dcat-admin 用户头像显示不出的原因及解决方法

热门文章

  1. ITU-R BT.656 协议
  2. Dapr集成之GRPC 接口
  3. 限流中间件IpRateLimitMiddleware的使用
  4. 使用C#快速生成顺序GUID
  5. 批量生成 Gitee 仓库克隆命令的方法
  6. 关于 Azure SQL 数据库你不知道的 5 件事
  7. WebSocket服务器(物联网下行通知神器)
  8. 一文读懂哈希和一致性哈希算法
  9. VS 2019 16.11正式发布 | 新功能(Hot Reload 热重载)试用
  10. 五个 .NET 性能小贴士