我有一个基于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
,但无济于事。如何在屏幕上更新此值?
答案 0 :(得分:0)
您当前的问题是,您设置了“值”属性Value += 0.5;
,但您绑定了“FormattedValue”属性。因此,您在“FormattedValue”属性的“Value”属性的Setter中引发“PropertyChanged”,您的代码应该按照需要运行。
修改强>
然后使用不必要的附加属性(“FormattedValue”)更好的方法是使用Label ContentStringFormat Property的ContentStringFormat属性。