2014-12-08 59 views
-1

我有一个基于RangeBase的自定义控件。在操控方面,我显示Value的格式化版本,像这样:强制更新自定义控件中的属性

<Label Content="{Binding RelativeSource={RelativeSource FindAncestor, 
     AncestorType={x:Type local:NumericUpDownControl}}, Path=FormattedValue}" /> 

FormattedValue看起来是这样的:

public string FormattedValue 
{ 
    get { return Value.ToString(_format); }    
} 

这一切似乎很好地工作。然而,在控制,有一个按钮,增加Value值:

private void myButton_Click(object sender, RoutedEventArgs e) 
{ 
    Value += 0.5;    
} 

,我有是,FormattedValue的是从来没有更新的问题。我想我需要一些类似于RaisePropertyChanged的东西,但是在控制范围内。我试图添加一个虚拟集到FormattedValue,但无济于事。我怎样才能得到这个值在屏幕上更新?

+1

为什么不能将FormattedValue作为依赖项属性? – 2014-12-08 08:36:35

+0

这不会导致'FormattedValue'在控件外部可用吗?我不想要这个。 – 2014-12-08 08:58:50

+0

另外,对于低调的选民:为什么? – 2014-12-08 08:59:30

回答

0

你目前的问题是,您设置“值”属性Value += 0.5;但你结合你的“FormattedValue的”属性。所以你在你的“Value”属性的Setter中为你的“FormattedValue”属性引发一个“PropertyChanged”,你的代码应该按照需要工作。

EDIT然后使用不必要的附加属性( “FormattedValue的”)

更好的方法是使用标签ContentStringFormat Property的ContentStringFormat属性。