我一直在阅读很多教程,但不知怎样,他们提到将属性绑定到一个简单的整数。
以下是设置:
我有一个用户控件。 我想将“private int size”绑定到XAML文件中边框的宽度。
最简单的方法是什么?
答案 0 :(得分:5)
与绑定其他任何内容的方式相同:
<Border BorderThickness="{Binding Size}">
private int _Size;
public int Size
{
get { return _Size; }
set
{
_Size = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Size");
}
}
当然,您的课程也必须实施INotifyPropertyChanged
。
答案 1 :(得分:1)
另一种方法是声明一个新的依赖属性并应用 TemplateBinding
这是控件模板,我在其中设置将Size属性绑定到宽度。
<Style TargetType="{x:Type local:MyUserControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MyUserControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<TextBox Width="{TemplateBinding Size}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
public class MyUserControl : Control
{
static MyUserControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyUserControl), new FrameworkPropertyMetadata(typeof(MyUserControl)));
}
public int Size
{
get { return (int)GetValue(SizeProperty); }
set { SetValue(SizeProperty, value); }
}
// Using a DependencyProperty as the backing store for Size. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SizeProperty =
DependencyProperty.Register("Size", typeof(int), typeof(MyUserControl), new UIPropertyMetadata(20));
}
参考Link