方法
既存プログラムの開発者が自作した、ボタンを押すたびに色の切り替わる機能つきのボタンであったためxxxAutomationPeerオブジェクトを介して実装する方法でも手の施しようがないようでした。
他方で調査を行った結果
<MouseBinding Gesture="LeftClick" {Binding SomeCommand}" />の{Binding SomeCommand}がICommandで定義されており、これを含むUserControlにはICommandオブジェクトを返すプロパティがあることが判明したため、それによって得られたオブジェクトを利用しICommand.Execute()を実行すれば、一応行わせたかった振る舞いをさせることが出来ました。
前提・実現したいこと
登場人物は既存プログラムと作成プログラムです。
既存プログラムはWPFアプリです。
作成プログラムはフォームアプリです。
作成プログラムは既存プログラムを動的に参照しており、別スレッドで起動させます。
作成プログラムは起動させた既存プログラムを操作して自動的にある手順を完了させることが目的です。
ここで、既存プログラム上で<MouseBinding Gesture="LeftClick" Command = "{Binding SomeCommand}" />といふうにクリック時イベントを定義されたコントロールがあります。
それに対して、**作成プログラムからクリック時イベント処理を実行させたい。**というのが「実現したいこと」です。
ButtonAutomationPeerを利用する方法もあることは把握していますが、対象となるコントロールはButtonではありません。
また、この質問においてソースコードの提示は行えません。
理由は
- 該当ソースコードが社外秘である
- WPFアプリを開発したことがない
- 正確に状況を再現するためにはUserControlを作成したり、さらにその中で動的にコントロールを生成しなくてはならないため、すぐに用意できない
です。
このような質問なので具体的な解決策を得るのは無論困難と理解しています。
「こうすればいんじゃね?」といったお知恵を頂けたら大変ありがたいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
- Visual Studio 2015 SP1
- Windows 7 64bit
回答1件
あなたの回答
tips
プレビュー