0

次のような定義で定義されたMouseDoubleClickイベントハンドラーがありListView.ItemContainerStyleます。

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <EventSetter Event="MouseDoubleClick" Handler="MyClass_MouseDoubleClick" />
    </Style>
</ListView.ItemContainerStyle>

イベント ハンドラーは次のように定義されます。

private void MyClass_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    ListViewItem listViewItem = (ListViewItem)sender;
    MyClass senderItem = (MyClass)(listViewItem.Content);
    EditFile editFileWindow = new EditFile(senderItem);
    editFileWindow.Show();
}

これは期待どおりに機能しますが、新しいウィンドウがポップアップしたときにメイン アプリケーション ウィンドウの背後に表示されるという例外があります。ロード後に新しいウィンドウにフォーカスを設定するにはどうすればよいですか?

ウィンドウのクラス コンストラクターの最後に追加しようとしthis.Focus()ましたが、何も変わりませんでした。

4

2 に答える 2

1

これを試して:

editFileWindow.ShowDialog(); 
于 2013-01-17T03:20:56.343 に答える
0

ShowDialog() を呼び出すだけで、メイン UI スレッドがブロックされます。

次のように、Dispatcher.BeginInvoke を介して呼び出してみてください。

 this.Dispatcher.BeginInvoke( new Action( () => editFileWindow.Show()));
于 2015-01-27T13:18:23.573 に答える