问题
WPF中得Panel(含StackPanel)子元素之间间隔不可通过属性设置修改,而即使是设置Style的方式,也只有子元素类型相同时才可修改,因此加入附加属性很有必要。
解决
附加属性源码
如何添加附加属性
其中,CodeProject上的这位老哥代码稍微有点问题,As那里跑不下去,修改如下:
using System.Windows;
using System.Windows.Controls;
namespace Extensions
{
public static class PanelExtensions
{
#region HorizontalContentAlignment
public static readonly DependencyProperty HorizontalContentAlignmentProperty =
DependencyProperty.RegisterAttached("HorizontalContentAlignment",
typeof(HorizontalAlignment), typeof(PanelExtensions),
new FrameworkPropertyMetadata(HorizontalAlignment.Left,
OnHorizontalContentAlignmentChanged));
public static void SetHorizontalContentAlignment(Panel d, HorizontalAlignment value)
{
d.SetValue(HorizontalContentAlignmentProperty, value);
}
public static HorizontalAlignment GetHorizontalContentAlignment(Panel d)
{
return (HorizontalAlignment)d.GetValue(HorizontalContentAlignmentProperty);
}
static void OnHorizontalContentAlignmentChanged
(object sender, DependencyPropertyChangedEventArgs e)
{
var Panel = sender as Panel;
Panel.SizeChanged -= OnHorizontalContentAlignmentUpdated;
Panel.SizeChanged += OnHorizontalContentAlignmentUpdated;
OnHorizontalContentAlignmentUpdated(Panel, null);
}
static