自定义WPF控件的默认值
本文关键字:默认值 控件 WPF 自定义 | 更新日期: 2023-09-27 17:50:31
我的问题是。我最近创建了一个自定义控件,它工作得很好。但是我有一个问题,当我使用它,我有一个小问题:
在我的控件中,我创建了一个名为Value的属性,定义如下: public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(int), typeof(NumericUpDown), new PropertyMetadata(1000));
public int Value
{
get
{
return (int)GetValue(ValueProperty);
}
set
{
SetValue(ValueProperty, value);
this.ValueText.Text = value.ToString();
}
}
当我对这个值进行数据绑定时,绑定工作,但是默认值被设置为1000,所以它首先打印1000。但实际上,绑定Value的属性不等于1000。我想在ValueText.Text
中打印创建value属性时绑定属性的值。
编辑:问题很简单,我如何删除默认值并直接打印绑定属性?
您应该能够在您的DependancyProperties元数据中设置PropertyChanged
事件,以便在Value
更改时更新ValueText
。
像这样:
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(int), typeof(NumericUpDown),
new PropertyMetadata(1000, (sender, e) => (sender as NumericUpDown).ValueText.Text = e.NewValue.ToString()));
public int Value
{
get { return (int)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
当WPF的数据绑定发生变化时,属性设置器将不会被调用,所以这种技术将不起作用。
默认的初始值总是1000,但是数据绑定可以覆盖它。你需要添加一个Callback,以便在依赖属性值被改变时适当地通知你。
详细信息,请参阅依赖属性回调页面,了解如何正确实现属性更改回调。这是设置其他(ValueText
)属性的合适位置。