2011-07-14 53 views
20

私のウィンドウが起動時に完全に隠されていることを望みます。ウィンドウなし、タスクバーにエントリなし。ユーザーには表示されず、アプリケーションが開始されます。起動時にWPFウィンドウを完全に非表示にしますか?

どうすれば実現できますか?

ありがとうございました!

+0

後でウィンドウを開くことはできますか? –

+1

興味のある方は、これが実際にどのような問題を解決していますか? osミューテックスを使ってアプリの複数のインスタンスが起動しないようにする必要があるかもしれません。ユーザーが何も開いていないと誤ってクリックしたと思うかもしれません... – LukeN

+0

@LukeN:1つの有効なユースケースがGUIアプリケーションをコマンドラインプログラムとして使用しています(この場合、ポップすることなくバックグラウンドでコマンドを実行する必要があります)その後、終了します)。時には、アプリケーションの2つのバージョンをコマンドラインのサポートをめったに使用しないようにすることはできません。 – Cameron

答えて

28

H.B.の方法に代わるだけの隠れたにVisibilityを設定し、falseにShowInTaskbarを設定することです。これはまだウィンドウを作成し、そのことを可能にします。

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" ShowInTaskbar="False" Visibility="Hidden"> 
    <Grid> 

    </Grid> 
</Window> 
+1

あなたの声明は確かですか?私は現在あなたのトリックを使用しようとしており、Visibilityが 'Hidden'の場合、' MainWindow'の 'Load'イベントは発生しません。 –

+1

@EmrysMyrooin Loadイベントは、ウィンドウが最初に表示されたときに起動されます。なぜなら、起動されないことは決して見られないからです。ウィンドウの作成後に何かを実行する必要がある場合は、代わりに初期化されたイベントを使用してみてください。 – Wobbles

+0

これは私にとってはうまくいかなかった。 @ H.Bを使いやすくなった。答えは。私は1つをしたくない場合はIEを作成して表示しません。 –

18

ウィンドウを表示しないでください。デフォルトではApp.xamlで定義されてStartupUriがあり、それを削除し、あなたが望むように、ちょうどShowHideそれをウィンドウを作成するために、コードビハインドでOnStartupメソッドをオーバーライドします。

+1

私はこれが受け入れられた答えであるべきだと思います。 – Adam

11

は単純にApp.xamlからStartupUriを削除し、ウィンドウを作成しないでください。

あなたの最後のウィンドウが閉じられた場合、アプリケーションがシャットダウンすることを防ぐことができますShutDownMode="OnExplicitShutdown"にアプリケーションを設定すると便利かもしれません。

+2

ShutDownModeを実際にOnExplicitShutdownに設定する必要はないと思います。私はこれが必要なのは、彼が最終的にウィンドウを表示して終了するときにアプリケーションをシャットダウンしたくない場合だけだと思う​​。 – LukeN

+1

彼が作成したいアプリケーションによっては役に立つかもしれない。さもなければアプリケーションはすぐに閉じるあなたが言ったように最後のウィンドウは閉じています。これにより、アプリケーションのライフサイクルを明示的に制御できます。しかし、厳密には必要でないことを反映するために私の答えを少し編集します。 –

関連する問題