2014-12-08 60 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屬性。