2011-09-08 14 views
2

Generic WPF Controlを作成しました。レイアウトはすべてコードで定義されています。これは、すべての罰金と私は例えば、ラウンド初めて仕事バインディングを追加しました:WPF UserControlをコードで作成し、INotifyPropertyChangedで登録していないバインディング

private bool btEnabled { get { return SOME_LOGIC; } } 

Button bt = new Button { Content = "Button" }; 
bt.SetBinding(Button.IsEnabledProperty, new Binding { Source = btEnabled, Mode = BindingMode.OneWay }); 

何かが私はINotifyPropertyChangedのを呼び出していますが、PropertyChangedイベントは常にnullであるbtEnabled性質に影響を与えるが起こるたびに、私はうまくできませんなぜバインディングはPropertyChangedイベントを登録していません。

すべてのアイデア?

おかげ

答えて

1

私は、あまりにもプライベートなことbtEnabledが財産であることを参照してください!

だから、おそらく2つのミスがある...

あなたBindingPath="btEnabled"ないSource=btEnabled を設定する必要がありますそして、あなたのbtEnabledプロパティは、公開する必要があります。

+0

さらにいくつかのソースが必要なので、ほとんどの場合、 'Source'は' this'に設定する必要があります。 –

+0

@ H.B、デフォルトのDataContextを示す未設定のソースはありませんか?コードの背後に明示的に設定する必要がありますか? –

+0

OPは元々プロパティをSourceに設定していたので、おそらくそのプロパティが同じオブジェクトにあるため、DataContextではなく現在のオブジェクト、つまり「this」にバインドするつもりはありませんでした。もちろん、DataContextがすでに 'this'に設定されていれば、それは必要ないでしょう。 –

関連する問題