1

这是我的问题。我最近创建了一个自定义控件,效果很好。但是我在使用的时候有一个问题,我有一个小问题:

在我的控制下,我创建了一个名为 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 属性时绑定属性的值。

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

4

2 回答 2

2

您应该能够PropertyChanged在 DependancyProperties 元数据中设置一个事件,以便在更改ValueText时进行更新Value

像这样的东西:

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); }
}
于 2013-01-02T20:26:28.157 回答
0

当事情通过 WPF 的数据绑定发生变化时,不会调用属性设置器,因此这种技术将不起作用。

默认的初始值将始终为 1000,但数据绑定可能会覆盖它。您将需要添加一个回调,以便在更改依赖项属性值时适当地通知您。

有关详细信息,请参阅依赖属性回调页面以了解如何正确实现属性更改回调。这是设置其他 ( ValueText) 属性的合适位置。

于 2013-01-02T20:06:51.637 回答