0

我有一个UserControl名为的 WPF 项目,它在同一解决方案 FormattedTextBox中包含一个和一个 WPF 窗口项目。TextBox

我的用户控件有两个这样注册的依赖属性:

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}"   

绑定不起作用 - 我从来没有进入用户控件中 Number 属性的 get 或 set 。有人可以帮忙吗?

4

1 回答 1

1

在 XAML 中设置依赖属性时(或通过绑定或动画等),WPF 直接访问底层 DependencyObject 和 DependencyProperty,而无需调用 CLR 包装器。请参阅XAML 加载和依赖属性,自定义依赖属性的含义。

为了获得有关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;
    ...
}
于 2013-01-08T14:32:01.660 回答