2013-01-02 148 views
0

这是我的问题。我最近创建了一个自定义控件,效果很好。 但我有一个问题,当我使用它,我有一个小问题:自定义WPF控件的默认值

在我的控制,我犯了一个名为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中打印bound属性的值当Value属性被创建时。

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

+0

我没有看到一个问号在这混乱的任何地方。 – MyCodeSucks

+0

哦,呃,好吧,很抱歉><(question added) – Kelvyne

回答

1

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

财产以后这样的:

​​
0

由于事情通过WPF的数据绑定进行更改,属性设置器不会被调用,所以此技术无法工作。

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

有关详细信息,请参阅Dependency Property Callbacks页面以了解如何正确实施已更改属性的回调。这是设置其他(ValueText)属性的适当位置。

+0

谢谢你,这是完美的! – Kelvyne