WPF Grid 中子控件之间的间距

2026-02-01 21:29:25 生存指南

这里可以看到另一种不错的方法 (链接)

你可以创建一个用于设置 Margin 属性的类:

public class MarginSetter

{

public static Thickness GetMargin(DependencyObject obj) => (Thickness)obj.GetValue(MarginProperty);

public static void SetMargin(DependencyObject obj, Thickness value) => obj.SetValue(MarginProperty, value);

// Using a DependencyProperty as the backing store for Margin. This enables animation, styling, binding, etc…

public static readonly DependencyProperty MarginProperty =

DependencyProperty.RegisterAttached(nameof(FrameworkElement.Margin), typeof(Thickness),

typeof(MarginSetter), new UIPropertyMetadata(new Thickness(), MarginChangedCallback));

public static void MarginChangedCallback(object sender, DependencyPropertyChangedEventArgs e)

{

// Make sure this is put on a panel

var panel = sender as Panel;

if (panel == null) return;

panel.Loaded += Panel_Loaded;

}

private static void Panel_Loaded(object sender, EventArgs e)

{

var panel = sender as Panel;

// Go over the children and set margin for them:

foreach (FrameworkElement fe in panel.Children.OfType())

fe.Margin = GetMargin(panel);

}

}

现在你已经附加了属性行为,因此像这样的语法将起作用:

最新发表
友情链接