2013-01-08 145 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; 
    ... 
}