C++/CLI を使用して WPF プロパティ変更イベントをサブスクライブしようとしました。これが難しくなるとは思っていませんでした。
最初に、いくつかのウィンドウ (IsMouseDirectlyOver) の特定のプロパティをサブスクライブしようとしましたが、最終的に次のコードで成功しました:
void MyClass::DependencyPropertyChanged(Object^ sender, DependencyPropertyChangedEventArgs args)
{
Debug::WriteLine("DependencyPropertyChanged: "+sender->ToString()+", "+args.Property->Name);
}
window->IsMouseDirectlyOverChanged += gcnew DependencyPropertyChangedEventHandler(this, &MyClass::DependencyPropertyChanged);
次に、オブジェクトのプロパティの変更をサブスクライブしようとしました(これは、最終的なコードでプロパティ名によるプロパティの変更を処理できる必要があるため、私にとって最も重要なことです)。私はこれで完全に失敗しました。
いろいろ試してみましたが、何もうまくいきませんでした。C++/CLI の例は見つかりませんでしたが、ドキュメントと C# の例によると、次のコードが最も適切なコードのように思われました。
window->PropertyChanged += gcnew PropertyChangedEventHandler(this, &MyClass::PropertyChanged);
void MyClass::PropertyChanged(Object^ sender, PropertyChangedEventArgs^ args)
{
...
}
しかし、コンパイラはエラー C2039 で、'PropertyChangedEvent' は 'System::Windows::Window' の要素ではないことを教えてくれます。
どうすれば私が望むものを達成できますか?