2016-12-30 9 views
0

私はリストビューを使用して複数のアイテムをユーザーに表示しています。今度は、ユーザーがダブルクリックで詳細ウィンドウを開くことができるようにしたいと思います。これはうまく動作しますが、ウィンドウが開かれたときに、すぐにバックグラウンドにプッシュされます。ウィンドウをフォアグラウンドにプッシュ

ウインドウの状態などでいくつかのことを試しましたが、結果はあらゆる状況でひどいです(ウインドウがバックグラウンドにプッシュされているか、ウインドウが永続的なオーバーレイです)。相対的にうまく動作する唯一のソリューションは、MouseLeftButtonUpイベントでDoubleClickイベントを変更することです。ユーザーがアイテムをクリックすると、ウィンドウが前面に表示されます。

これは、コントローラクラスから私のコードです:

public void ShowDetails(object details) 
{ 
    Details detailWindow = new Details(this, Config.GetCultureInformation()); 
    detailWindow.LoadData(details); 
    detailWindow.Show(); 
} 

UIクラスからこの私のコード

private void listViewItem_MouseClick(object sender, MouseButtonEventArgs e) 
{ 
    ListViewItem item = sender as ListViewItem; 
    AppControl.ShowDetails(item.Content); 
} 

答えて

0

あなたがモーダルとして表示する必要があります。

public void ShowDetails(object details) 
{ 
    Details detailWindow = new Details(this, Config.GetCultureInformation()); 
    detailWindow.LoadData(details); 
    detailWindow.ShowDialog(); //Instead of detailWindow.Show(); 
} 

あなたがフリーズ使用detailWindow.BringToFront()またはdetailWindow.TopMost = trueせずにメインウィンドウを維持したい場合は、このother post

ソースhereで戦利品を取ります。

+0

この簡単な解決策をお寄せいただきありがとうございます。しかし、これは私のアプリから欲しい行動ではありません。詳細ウィンドウが表示されると、メインアプリがフリーズします。私は、ユーザーがメインアプリケーションと対話し、複数の詳細ウィンドウを開く可能性を持っていることを望みます。 – mario0391

+0

私はそれを管理するためのいくつかの方法で私の答えを編集しました。それが動作するかどうか私に教えてください。 –

0

あなたのお手伝いをありがとうございました。トップに私は私に合ったソリューションを作成する方法を見つけました。

私のウィンドウのコンストラクタでは、最上位をtrueに設定し、Windowはロードされたイベントで最上位をfalseに設定しました。 My Windowはフォアグラウンドで際立っていますが、ユーザーはそれを離れてメインアプリで処理することができます。

関連する問題