说明:学习参考了
http://www.cnblogs.com/chenxizhang/archive/2011/09/22/2185414.html,详细代码可以参考该网址
更改为边框为1px:
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 border_left = new Border()
{
BorderBrush = new SolidColorBrush(Colors.Blue),
BorderThickness = new Thickness(0,0,1,1),
Padding = new Thickness(1),
};
//第一行
var topRowBorder = new Border()
{
BorderBrush = new SolidColorBrush(Colors.Blue),
BorderThickness = new Thickness(0, 1, 1, 1),
Padding = new Thickness(1),
};
//第一列
var topColm = new Border()
{
BorderBrush = new SolidColorBrush(Colors.Blue),
BorderThickness = new Thickness(1, 0, 1, 1),
Padding = new Thickness(1),
};
var all =new Border()
{
BorderBrush = new SolidColorBrush(Colors.Blue),
BorderThickness = new Thickness(1, 1, 1, 1),
Padding = new Thickness(1),
};
var row = Grid.GetRow(item);
var column = Grid.GetColumn(item);
var rowspan = Grid.GetRowSpan(item);
var columnspan = Grid.GetColumnSpan(item);
//第一个文本框
if (row == 0 && column == 0)
{
Grid.SetRow(all, row);
Grid.SetColumn(all, column);
Grid.SetRowSpan(all, rowspan);
Grid.SetColumnSpan(all, columnspan);
grid.Children.RemoveAt(i);
all.Child = item;
grid.Children.Insert(i, all);
}
else if (row == 0 && column != 0)
{
Grid.SetRow(topRowBorder, row);
Grid.SetColumn(topRowBorder, column);
Grid.SetRowSpan(topRowBorder, rowspan);
Grid.SetColumnSpan(topRowBorder, columnspan);
grid.Children.RemoveAt(i);
topRowBorder.Child = item;
grid.Children.Insert(i, topRowBorder);
}
else if (row != 0 && column == 0)
{
Grid.SetRow(topColm, row);
Grid.SetColumn(topColm, column);
Grid.SetRowSpan(topColm, rowspan);
Grid.SetColumnSpan(topColm, columnspan);
grid.Children.RemoveAt(i);
topColm.Child = item;
grid.Children.Insert(i, topColm);
}
else
{
Grid.SetRow(border_left, row);
Grid.SetColumn(border_left, column);
Grid.SetRowSpan(border_left, rowspan);
Grid.SetColumnSpan(border_left, columnspan);
grid.Children.RemoveAt(i);
border_left.Child = item;
grid.Children.Insert(i, border_left);
}
}
};
}
}