为WPF和Silverlight的Grid添加边框线(原文链接)
using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace SilverlightApplicationGridBorderSample { /// <summary> /// 为Grid添加的一个特殊功能 /// 作者:陈希章 /// 反馈:[email protected] /// </summary> public class GridHelper { //请注意:可以通过propa这个快捷方式生成下面三段代码 public static bool GetShowBorder(DependencyObject obj) { return (bool)obj.GetValue(ShowBorderProperty); } public static void SetShowBorder(DependencyObject obj,bool value) { obj.SetValue(ShowBorderProperty,value); } public static readonly DependencyProperty ShowBorderProperty = DependencyProperty.Registerattached("ShowBorder",typeof(bool),typeof(GridHelper),new PropertyMetadata(OnShowBorderChanged)); //这是一个事件处理程序,需要手工编写,必须是静态方法 private static void OnShowBorderChanged(DependencyObject d,DependencyPropertyChangedEventArgs e) { var grid = d as Grid; if((bool)e.OldValue) { grid.Loaded -= (s,arg) => { }; } if((bool)e.NewValue) { grid.Loaded += (s,arg) => { //这种做法自动将控件移动到Border里面来 var controls = grid.Children; var count = controls.Count; for(int i = 0; i < count; i++) { var item = controls[i] as FrameworkElement; var row = Grid.GetRow(item); var column = Grid.GetColumn(item); var rowspan = Grid.GetRowSpan(item); var columnspan = Grid.GetColumnSpan(item); Border border = new Border(); border.BorderBrush = new SolidColorBrush(Colors.LightGray); //保证边框线条宽度统一 if ((0 == (int)row) && (0 == (int)column)) { //第一行第一列 border.BorderThickness = new Thickness(1,1,1); } else if (0 == (int)row) { //第一行 border.BorderThickness = new Thickness(0,1); } else if (0 == (int)column) { //第一列 border.BorderThickness = new Thickness(1,1); } else { //其它行列,即除去第一行,第一列以为的所有单元格 border.BorderThickness = new Thickness(0,1); } border.Padding = new Thickness(2); //{ // BorderBrush = new SolidColorBrush(Colors.LightGray),// BorderThickness = new Thickness(1),// Padding = new Thickness(2) //}; Grid.SetRow(border,row); Grid.SetColumn(border,column); Grid.SetRowSpan(border,rowspan); Grid.SetColumnSpan(border,columnspan); grid.Children.RemoveAt(i); border.Child = item; grid.Children.Insert(i,border); } }; } } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。