这篇文章主要介绍了WPF利用附加属性修改ShowGridLines效果的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强>前言强>
附加属性是说一个属性本来不属于某个对象,但由于某种需求而被后来附加上,也就是把对象放入一个特定环境后对象才具有的属性就称为附加属性,附加属性的作用就是将属性与数据类型解耦,让数据类型的设计更加灵活,举例,一个文本框被放在不同的布局容器中时就会有不同的布局属性,这些属性就是由布局容器为文本框附加上的,附加属性的本质就是依赖属性,二者仅仅在注册和包装器上有一点区别
小技巧,在大战中输入propa后,连按两次tab键,可以添加好一个附加属性的框架,继续按tab键,可以继续修改附加属性的内容
本文主要介绍的是关于WPF用附加属性修改ShowGridLines效果的相关内容、下面话不多说了,来一起看看详细的介绍吧。
<强> 1。思路主要代码强>
WPF的栅格线原本效果是虚线类型的。有时候需要设计成表格形式的,因此有了用附加属性来自动绘制边框线的想法。
思路:绘制线并添加到网格的孩子里,但效果并不理想,会出现锯齿,像素对齐,模糊等问题。
UseLayoutRounding=癋alse"
引用>
SnapsToDevicePixels=癟rue"<代码> RenderOptions。EdgeModeProperty 代码>貌似都没起作用。
于是想到了用边界来实现,简单又实用吧哈哈。
<强>大致思路如下:强>
绘制边界的左边框和上边框,在边界的时候考虑边界封闭,然后将边境平移一半的距离。这样边框就居中并且包围了所有的线。
<强>主要代码如下:强>
using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace 用附加属性修改网格的边框 { public class GridHelper ,{ private 才能static void  RefreshGrid (Grid 网格,int 线宽,,Brush 颜色) {才能 ,,for (var 小姐:=,grid.Children.Count 作用;1;,小姐:祝辞,0;,我——) ,,{ ,,,var child =, grid.Children[我]; ,,,var bd =, child as 边界; ,,,if (bd !=, null ,,, bd.Tag !=, null ,,, bd.Tag.ToString (),==,“gridline") ,,,{ ,,,,grid.Children.Remove (bd); ,,,} ,,} ,,var rows =, grid.RowDefinitions.Count; ,,var cols =, grid.ColumnDefinitions.Count; ,,//边界考虑 ,,if (rows ==, 0) ,,{ ,,,rows =, 1; ,,} ,,if (cols ==, 0) ,,{ ,,,cols =, 1; ,,} ,,//生成行列 ,,for (var 小姐:=,0;,小姐:& lt;,行;,我+ +) ,,{ ,,,for (var j =, 0;, j & lt;,关口;,j + +) ,,,{ ,,,,var thick =, new 厚度(线宽,线宽,0,0); ,,,,var margin =, new 厚度(线宽/2 d,线宽/2 d, 0, 0); ,,,,//边界考虑 ,,,,if (小姐:==,0) ,,,,{ ,,,,,margin.Top =, 0; ,,,,} ,,,,if (小姐:==,rows 作用;1) ,,,,{ ,,,,,thick.Bottom =,线宽; ,,,,} ,,,,if (j ==, 0) ,,,,{ ,,,,,margin.Left =, 0; ,,,,} ,,,,if (j ==, cols 作用;1) ,,,,{ ,,,,,thick.Right =,线宽; ,,,,} ,,,,var bd =, new 边界 ,,,,{ ,,,,,BorderThickness =,厚, ,,,,,Margin =,, ,,,,,BorderBrush =,颜色, ,,,,,Tag =,“gridline" ,,,,}; ,,,,Grid.SetRow (bd,,我); ,,,,Grid.SetColumn (bd, j); ,,,,grid.Children.Add (bd); ,,,} ,,} ,,grid.InvalidateArrange (); ,,grid.InvalidateVisual (); ,,} , # region 线才能颜色//才能,Using a DependencyProperty as 从而backing store for LineColor只却;能够enables 动画,风格,,绑定,,等等…… public 才能;static  readonly DependencyProperty LineColorProperty =,,DependencyProperty.RegisterAttached (“LineColor",, typeof (刷),typeof (GridHelper), null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullWPF利用附加属性修改ShowGridLines效果的方法