从自定义控件中强制更新属性

时间:2014-12-08 08:25:49

标签: c# wpf xaml custom-controls

我有一个基于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 个答案:

答案 0 :(得分:0)

您当前的问题是,您设置了“值”属性Value += 0.5;,但您绑定了“FormattedValue”属性。因此,您在“FormattedValue”属性的“Value”属性的Setter中引发“PropertyChanged”,您的代码应该按照需要运行。

修改

然后使用不必要的附加属性(“FormattedValue”)更好的方法是使用Label ContentStringFormat Property的ContentStringFormat属性。