0

MSDNで説明されているようにDynamicItemStart、コマンドフラグを使用してメニューにコマンドを追加するVS2012拡張性パッケージがあります。これらのコマンドは、組み込みの外部ツール機能と少し似ているため、正確なセットは、私が定義するのではなく、アドインユーザーが構成します。これにはコマンドが最も適しているようです。DynamicItemStart

例のように、私はたくさんのアイテムを追加し、それらを非表示にしてから、BeforeQueryStatusコールバックを使用して可視性を制御します。これはすべて機能しているように見えます。メニュー項目は私が期待したとおりに表示され、マウスでクリックすることで呼び出すことができます。私のパッケージにも1つの固定コマンドがあり、それも機能します。

私の非動的コマンドは、[ツール]、[オプション]、[キーボード]セクションのコマンドリストにも表示されるので、キーボードショートカットを作成できます。(同じリストを使用しているように見えるイミディエイトウィンドウから呼び出すこともできます。)しかし、私の動的コマンドは表示されません!私はそれらがのようなある種の自動生成されたリストとして現れることを期待していましたTools.ExternalCommand

DynamicItemStartこの方法でコマンドを呼び出すことはできませんか?

4

1 に答える 1

1

この問題を抱えている他の人がこの質問を見つけた場合...

DynamicItemStart私が理解できる限り、コマンドには名前が付いていないようです。ドキュメントには、MRUまたはウィンドウリスト用であると記載されているため、名前を付ける必要があるとは誰も考えていませんでした。

したがって、私の目的のために、100個のプレースホルダーコマンド(Command00... Command99)を作成し、それぞれにDynamicVisibilityおよびTextChangesコマンドフラグを設定しました。(現在、1,237行のVSCTファイルがあります。)

次に、実行時にBeforeQueryStatusコールバックを使用して、未使用のアイテムを非表示にし、使用済みのアイテムを表示して、メニューに(ユーザーが割り当てた)キャプションを設定します。また、私のUIは、割り当てられた各アクションに対応するコマンドを注意深く表示し、マッピングをそのまま維持します。これにより、ユーザーは、各アクションにキーボードショートカットを割り当てるときに、100個のコマンド名のどれを使用するかがわかります。

これはほとんど理想的ではなく、VisualStudioでは少し厄介な制限があります。しかし、それは適切に機能するように見えます。

于 2013-03-21T00:57:43.460 に答える