0

同じソリューションに と WPF ウィンドウ プロジェクト を含むUserControlという名前の WPF プロジェクトがあります。FormattedTextBoxTextBox

私のユーザー コントロールには、次のように登録された 2 つの依存関係プロパティがあります。

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には、 という名前のプロパティが含まれていますMyNumberMyNumberメイン ウィンドウの XAML で、次のようにバインドしようとします。

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

バインドが機能しません。ユーザー コントロールの Number プロパティで get または set を実行することはありません。誰でも助けることができますか?

4

1 に答える 1

1

依存関係プロパティが XAML で (またはバインディングやアニメーションなどによって) 設定されている場合、WPF は、CLR ラッパーを呼び出さずに、基になる DependencyObject と DependencyProperty に直接アクセスします。XAML の読み込みと依存関係プロパティ、カスタム依存関係プロパティの意味を参照してください。

プロパティの変更に関する通知を受け取るには、 PropertyChangedCallbackNumberを登録する必要があります。

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 に答える