我想實現從文本框自定義依賴屬性綁定
public class numberBox : TextBox
繼承了numberBox類,我宣佈一個自定義的DependencyProperty numberProperty
public static readonly DependencyProperty numberProperty = DependencyProperty.Register("number", typeof(object), typeof(numberBox), new PropertyMetadata(0));
public object number
{
get { return GetValue(numberProperty); }
set { SetValue(numberProperty, value); }
}
在numberBox的構造函數中,我有一個綁定同步文本和數字
public numberBox()
{
Binding b = new Binding("number");
b.Source = this;
this.SetBinding(TextProperty, b);
}
在一種情況下,當我使用numberBo X像這樣
<BC:numberBox x:Name="numC1" number={Binding ElementName=dg, Path=SelectedItem.C1} />
「DG」是一個DataGrid,我的目標是當數據網格的選擇改變,numberBox顯示所選項目的價值
PS我知道我可以使用DataGrid.SelectionChanged事件實現相同的行爲,但我只想了解更多關於綁定
一切工作正常,至今,當我選擇不同的DataGrid行,數字框顯示正確的值,但是,當數字框得到焦點,被編輯後,失去焦點,numberProperty綁定消失了,這意味着當DataGrid選擇的項目改變時,它不會'牛逼帶來的價值爲numberBox了
我設置一個斷點,並檢查「this.GetBindingExpression(numberProperty)」在numberBox,它返回null在此之後numberBox進行編輯,並失去焦點
有誰知道原因我該如何解決這個問題?
非常感謝。