0

より良い説明、私は願っています:

  • 3 つのボタンがあるツールバーがあり、3 つすべてがコマンド (CommandParameter を含む) にバインドされています。
  • このツールバーは複数の画面で使用されます
  • ツールバーの xaml は、これらすべての画面でまったく同じです

ツールバー インスタンスを削除し、3 つのコマンドを提供するユーザー コントロールに置き換えて、各画面でバインディングを保持できるようにします。ツールバーの機能は後で変更する予定ですが、外部プログラミング インターフェイス (つまり、3 つのコマンド) は同じです。

そう:

  • ユーザー コントロールを作成し、コマンドごとに 3 セットの依存関係プロパティ (OneCommand、OneCommandParameter、OneCommandTarget) を作成して、これらをバインドに使用できるようにしました。
  • ツールバーの xaml をユーザー コントロールの xaml 内に移動しました。
  • 組み込みのユーザー コントロール プロパティにバインドするように、ツールバー ボタンのバインドを変更しました。
  • 各画面 (実際には最初の画面のみ) で、元のツールバーをユーザー コントロールに置き換え、新しいプロパティを正しいコマンドにバインドしました。

コントロールは表示されますが、ボタンは機能しません。それはそれについてです。

--

元の説明 - あまり明確ではありません:

多数のボタンをカプセル化する WPF ユーザー コントロールがあります。以前は、コントロールは多数のボタンを備えたツールバーでしたが、多数の画面でまったく同じ機能が必要なため、ツールバーをカスタム コントロールにリファクタリングしました。

ただし、元のボタンのコマンド バインドを保持したいと思います。

  • ユーザー コントロールに 3 セットの依存関係プロパティ (XCommand、XCommandParameter、および XCommandTarget) を作成しました。
  • ユーザー コントロール xaml で、「実際の」ボタンをそれらのプロパティにバインドします (各ボタンを各プロパティ セットにバインドします)。
  • ユーザー コントロールを使用する場合は、新しいプロパティを実際のコマンド バインドにバインドします。

要するに、ユーザー コントロールが公開する「コマンド」ごとに ICommandSource 機能を維持したいと考えています。ただし、このデュアル データ バインディング シナリオは機能していないようです。または、何か間違っています。:)

これを行うより良い方法はありますか?必要なのは、コマンドをコントロールの外側から内側のボタンに「ブリッジ」して、Execute および CanExecute 機能を維持することだけです。

4

1 に答える 1

-5

私はこれを解決しました。内部コントロール バインディングの RelativeSource にバグがありました。現在、期待どおりに正常に動作しています。

于 2009-02-19T12:24:57.807 に答える