2011-08-04 12 views
4

WPF要素のIsEnabledプロパティの変更をリッスンしたいので(各変更時に共通コードを実行できるように)、各ウィンドウ/ページ。Wpf要素のIsEnabledへのリッスン

また、強力なイベントリスナーによるメモリーリークの潜在的な問題を回避したいと考えています。私は弱いイベントリスナーなどを使用することを提案するいくつかの記事に出くわしましたが、それは本当に簡単に思われるもののために非常に複雑に思えます。

これを行うには、IsEnabledの変更をリッスンしたいコントロールタイプがいくつかあります(将来的にはもっと多分)ので、コントロールをサブクラス化する必要はありません。

これを処理する方法は誰にも分かりません。

答えて

4

この問題へのきちんとした解決策は、ソースとしてIsEnabledプロパティとの結合一つの方法をカスタム添付プロパティとセットアップを作成するでしょう:

<Control IsEnabled={Binding IsEnabledProperty} 
     AttachedProperty={Binding RelativeSource={RelativeSource Self}, Path=IsEnabled, Mode=OneWay}"/> 

これは、あなたが添付プロパティの中に共通の機能を処理することができます変更されたハンドラ(これは、IsEnabledが通常のCLRイベントであり、バブルアップしないため、カスタムルーティングイベントを発生させることがあります)。

2

Control.EnabledChangedイベントがあります

+0

実際には、名前はIsEnabledChangedです。 –

関連する問題