2013-01-08 146 views
0

我有一個名爲FormattedTextBox的WPF UserControl項目,它包含一個TextBox和一個WPF窗口項目在同一個解決方案中。綁定到usercontrols依賴項屬性

我的用戶控件註冊這樣兩個依賴屬性:

public static readonly DependencyProperty NumberProperty = 
    DependencyProperty.Register("Number", 
     typeof(double), 
     typeof(FormattedTextBox), 
     new FrameworkPropertyMetadata()); 

public static readonly DependencyProperty NumberFormatStringProperty = 
    DependencyProperty.Register("NumberFormatString", 
     typeof(string), 
     typeof(FormattedTextBox), 
     new FrameworkPropertyMetadata()); 

我做我的主窗口用戶控件的一個實例。主窗口填充INotifyPropertyChanged,並有一個名爲MyNumber的屬性。在主窗口中的XAML我嘗試綁定到MyNumber這樣的:

Number="{Binding Path=MyNumber,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 

綁定不工作 - 我永遠也進不了獲取或在用戶控件上的數字財產。任何人都可以幫忙嗎?

+0

跑......看在輸出窗口......看到任何有約束力的錯誤? – tsiorn

回答

1

當依賴屬性在XAML設置(或通過結合或動畫等),WPF直接訪問而不調用CLR包裝底層的DependencyObject和的DependencyProperty。請參閱XAML Loading and Dependency Properties, 對自定義相關屬性的影響。

爲了得到通知有關Number性質的變化,你必須註冊一個PropertyChangedCallback:在調試模式

public static readonly DependencyProperty NumberProperty = 
    DependencyProperty.Register("Number", 
     typeof(double), 
     typeof(FormattedTextBox), 
     new FrameworkPropertyMetadata(NumberPropertyChanged)); 

private static void NumberPropertyChanged(
    DependencyObject obj, DependencyPropertyChangedEventArgs e) 
{ 
    var textBox = obj as FormattedTextBox; 
    ... 
}