如何将WPF控件的边距绑定到属性?

时间:2017-03-15 23:03:55

标签: c# wpf xaml

我有一个C#/ .Net WPF桌面应用程序。 定义了一系列WPF控件,我想在运行时动态更改边距。

如何将控件的边距绑定到后面代码中的属性?

考虑以下控件:

<TextBox Name="Foo" Text="Foo Text"  Margin="0,10,0,10">

我在主窗口中定义了以下内容:

public double TopMargin {get; set;}
public double BottomMargin {get; set;}

我希望能够动态更改边距,这样如果我更改运行时C#代码中的边距,新边距值就会反映在UI中。

如果更容易,我会考虑使用:

public Thickness FooMargin{get; set;}

实现这一目标最干净/最好的方式是什么?

由于

1 个答案:

答案 0 :(得分:2)

最好的方法是按照你的建议使用:

 public Thickness TextBoxMargin { get; set; }

然后您可以使用厚度构造函数中所需的左,上,右,下(边距)值创建边距

 TextBoxMargin = new Thickness(5,5,5,5);

如果您使用的是MVVM,则可以像查看模型中的常规属性一样进行绑定:

<TextBox Name="Foo" Text="Foo Text"  Margin="{Binding TextBoxMargin}">

如果您想在代码中执行此操作,那么在您的用户控件中只需指定:

Foo.Margin = TextBoxMargin;