首先,在你的自定义控件类 (示例: UserControl1
) 添加以下代码:
// 不要忘了将 UserControl1 替换为你的类
private static DependencyProperty RegisterProperty<Value>(string name, Value? defaultValue, Action<IntegerTextBox, DependencyPropertyChangedEventArgs> onValueChanged) =>
DependencyProperty.Register(name, typeof(Value), typeof(UserControl1),
new(defaultValue, new((sender, e) => onValueChanged((UserControl1)sender, e))));
以上代码简化了官方方法的流程,以便你不用再去额外输入不必要的参数,并提前对 sender 进行类型转换。
此后,添加一个属性只需要添加以下代码即可,相比传统方法看起来会非常直观,非常省事。
// 添加名为 Value 的属性,类型是 int,默认值为 0
public static readonly DependencyProperty ValueProperty = RegisterProperty(name: "Value", defaultValue: 0,
onValueChanged: (sender, e) => {
// 示例: Value 的值改变时同步到控件定义的 InputBox
// sender.InputBox.Text = e.NewValue.ToString();
}
);
public int Value
{
get { return (int)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
以上代码中,defaultValue 可以为 null,但使用 null 作为默认值必须声明泛型类型
License
源代码许可证:你可以任意复制、修改这些代码并用于你的项目,无需声明作者。
文章许可证:CC BY-SA 4.0