より良い説明、私は願っています:
- 3 つのボタンがあるツールバーがあり、3 つすべてがコマンド (CommandParameter を含む) にバインドされています。
- このツールバーは複数の画面で使用されます
- ツールバーの xaml は、これらすべての画面でまったく同じです
ツールバー インスタンスを削除し、3 つのコマンドを提供するユーザー コントロールに置き換えて、各画面でバインディングを保持できるようにします。ツールバーの機能は後で変更する予定ですが、外部プログラミング インターフェイス (つまり、3 つのコマンド) は同じです。
そう:
- ユーザー コントロールを作成し、コマンドごとに 3 セットの依存関係プロパティ (OneCommand、OneCommandParameter、OneCommandTarget) を作成して、これらをバインドに使用できるようにしました。
- ツールバーの xaml をユーザー コントロールの xaml 内に移動しました。
- 組み込みのユーザー コントロール プロパティにバインドするように、ツールバー ボタンのバインドを変更しました。
- 各画面 (実際には最初の画面のみ) で、元のツールバーをユーザー コントロールに置き換え、新しいプロパティを正しいコマンドにバインドしました。
コントロールは表示されますが、ボタンは機能しません。それはそれについてです。
--
元の説明 - あまり明確ではありません:
多数のボタンをカプセル化する WPF ユーザー コントロールがあります。以前は、コントロールは多数のボタンを備えたツールバーでしたが、多数の画面でまったく同じ機能が必要なため、ツールバーをカスタム コントロールにリファクタリングしました。
ただし、元のボタンのコマンド バインドを保持したいと思います。
- ユーザー コントロールに 3 セットの依存関係プロパティ (XCommand、XCommandParameter、および XCommandTarget) を作成しました。
- ユーザー コントロール xaml で、「実際の」ボタンをそれらのプロパティにバインドします (各ボタンを各プロパティ セットにバインドします)。
- ユーザー コントロールを使用する場合は、新しいプロパティを実際のコマンド バインドにバインドします。
要するに、ユーザー コントロールが公開する「コマンド」ごとに ICommandSource 機能を維持したいと考えています。ただし、このデュアル データ バインディング シナリオは機能していないようです。または、何か間違っています。:)
これを行うより良い方法はありますか?必要なのは、コマンドをコントロールの外側から内側のボタンに「ブリッジ」して、Execute および CanExecute 機能を維持することだけです。