7

WPFを使用しており、DockingLibraryから派生したウィンドウがあります。このウィンドウには、複数のアイテムを含むグリッドがあり、そのうちの1つはWPFデータグリッドです。MV-VMパターンを使用しています。このウィンドウが作成されて表示されると、このデータグリッドのどの行も選択されません。次のような操作を行うことで、強調表示されたとおりに行を表示するように設定できます。

  SharedWindow.ShipmentWin.shipmentDataGrid.SelectedIndex = 0;

これにより、データグリッドの最初の行が強調表示されて表示されます。ただし、これらのいずれかが常に存在するわけではないため、この行は選択されておらず、フォーカスもありません。次のように、IsSelectedとFocusをこの行に設定してみました。

  SharedWindow.ShipmentWin.ShipVM.IsSelected = true;
  bool focused = SharedWindow.ShipmentWin.shipmentDataGrid.Focus();

私はこれについてすべて間違っていますか?データグリッドの最初の行を選択してそれにフォーカスを設定する他の方法はありますか?通常、データグリッドが作成されると、ユーザーが目的の行をクリックするまで行は選択されません。

どんな考えでも大歓迎です。

ありがとう!

4

2 に答える 2

10

FocusManagerを見てください。これにより、 SetFocusedElementメソッドを介して別のUI要素にフォーカスを設定できます。さらに、フォーカスの問題をデバッグするのに便利な、アプリケーションで現在フォーカスされている要素を判別できます。スヌープも便利です。下部のステータスバーに現在フォーカスされている要素が表示されます。

WPF ToolkitのDataGridを使用する場合は、フォーカス処理に関連するいくつかのバグを見つける準備をしてください。最近対処されたものもあります。

于 2010-03-09T16:23:33.740 に答える
1

まったく異なる動物である論理フォーカスキーボードフォーカスの違いを理解することも価値があります。この.Focus()メソッドは、論理的なフォーカスのみを設定する場合があります。これは、おそらくあなたが望むものではありません。

メソッドのドキュメントには、キーボードフォーカスが設定されている場合、または設定されていない場合Focusに返されることが記載されています。truefalse

于 2010-03-09T18:04:56.777 に答える