自定义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属性时绑定属性的值。

编辑:问题很简单,我如何删除默认值并直接打印绑定属性?

自定义WPF控件的默认值

您应该能够在您的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)属性的合适位置。