私はいくつかのデータグリッドを持つアプリケーションを持っており、コマンドパラメータとしてフォーカスされたデータグリッドを取得するコマンドをExcelにエクスポートしています。CommandParameter を FocusManager.FocusedElement にバインドすることは可能ですか、それとも明示的に設定する必要がありますか?
前もって感謝します
私はいくつかのデータグリッドを持つアプリケーションを持っており、コマンドパラメータとしてフォーカスされたデータグリッドを取得するコマンドをExcelにエクスポートしています。CommandParameter を FocusManager.FocusedElement にバインドすることは可能ですか、それとも明示的に設定する必要がありますか?
前もって感謝します
はい、FocusedElement にバインドできます。何かのようなもの:
<Button ...
CommandParameter="{Binding (FocusManager.FocusedElement), RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
フォーカス スコープによっては、ウィンドウを別の要素に変更する必要がある場合があります。
しかし、個人的には、コマンドのハンドラーをセットアップして、パラメーターが null かどうかを確認します。もしそうなら、私はプログラムでFocusManager.FocusedElement
.
var element = parameter as DataGrid;
if (element == null)
element = FocusManager.FocusedElement as DataGrid.
関連する DataGrid を取得するために、必要に応じてビジュアル ツリーを検索することもできます。
"SelectedDataGrid"
ViewModel の CLR プロパティに、DataGrid のいずれかがフォーカスを取得するたびに更新するものを指定できないのはなぜですか。ビューから渡す代わりに、コードでそのプロパティを使用するだけです。