2011-02-01 14 views
1

私はOut-of-Browser(OOB)Silverlightアプリケーションをシステムトレイの右下に移動しようとしています。アプリのサイズは160x100になります。Silverlight OOBウィンドウをデスクトップの右下に配置するにはどうすればよいですか?

私はちょうど画面の下部に十分に近づけない。 「トップ」プロパティを特定の値より上に設定した瞬間、それは無視されます。私App.xaml.csで例えば

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    this.RootVisual = new MainPage(); 
    if (App.Current.HasElevatedPermissions && 
     App.Current.IsRunningOutOfBrowser) 
    { 
     Window w = App.Current.MainWindow; 
     w.Width = 160; 
     w.Height = 100; 
     w.Left = 1108; 
     // Up to this point the above all works ok. 
     w.Top = 603; // This is ignored if over 602! 
    } 
} 

値はウィンドウスタイル=「デフォルト」のための602、または640より大きいより大きい場合App.Current.MainWindow.Topは無視される設定ウィンドウスタイル= '境界線なし'の場合。

「Top」の値を603以上に設定した場合、プロジェクト設定(私の場合は50)のブラウザ外設定ダイアログで指定されている先頭にサイレント設定されます。例外はスローされません。

'Left'プロパティではこの問題は発生していないようです。ウィンドウを画面の右側に移動するには、Leftを設定します。

私はWindows XP SP3とSilverlight 4.0/VS2010を使用しています。私は、 'ブラウザの外で実行しているときに昇格された信頼を要求する'チェックボックスをチェックしました。

画面を画面上でさらに下に移動できない理由は何ですか?

ウィンドウが画面の右下に「ドッキング」されているように見える他の方法はありますか?

ありがとうございます!

更新: 私が言及している必要があります。

  • を私は「アウトオブブラウザ設定」ダイアログで「手動でウィンドウの位置を設定する」ボックスをチェックしています。ここでTop/Leftプロパティを設定すると(コードではなく)、結果は同じです:「Top」を640以上の値に設定すると(ウィンドウスタイル= '境界線なし')、ウィンドウは中央に配置されます指定された座標ではなく、デスクトップの
  • 私のアプリでは、上/左をハードコードされた値に設定しているわけではありません。上のコードスニペットで問題を説明しています。実際のアプリでは、ユーザーにウィンドウを移動させてから、アプリが終了するとその位置を保存します。
  • 私は画面/デスクトップのサイズを検出したいと思いますが、Silverlightでそれを行う方法が見つかりませんでした。
+0

トライキャッチを使用します異なる画面解像度。 – ChrisF

+0

ありがとう@ChrisF、私は言及すべきである(a)私はハード/私のアプリで左の値をハードコードしない、私は問題を説明するために上のコードスニペットでそれをした。 (b)画面/デスクトップのサイズを検出したいが、Silverlightでそれを行う方法が見つからなかった。 –

+0

良い点。それは別の質問です;) – ChrisF

答えて

1

WindowStartupLocation to Manualを設定する必要があります。

<OutOfBrowserSettings.WindowSettings> 
    <WindowSettings Title="Silverlight Application" 
        WindowStartupLocation="Manual" 
        Left="0" 
        Top="0" 
        Width="640" 
        Height="480"/> 
    </OutOfBrowserSettings.WindowSettings> 

OutOfBrowserSettings.WindowSettingsには、必要に応じてコードを介してアクセスすることもできます。

+0

ありがとう@アーロン!私はすでに 'ブラウザ外設定'ダイアログで 'Set window location manually'チェックボックスが選択されていることに言及しておきます。問題は、私は正常にウィンドウの位置を手動で設定することができますが、 'トップ'プロパティ(私の場合は640)の最大値があるようです。ブラウザ外の設定でトップを設定しても問題は解決しません。また、私は実際にアプリケーションのTop/Left値を厳密にコード化するわけではありません。実際のコードは、アプリケーションを閉じるときにIsolatedStorageの最後のウィンドウ位置を保存し、起動後にウィンドウを移動します。 –

+0

@codeblastあなたはこれに似た何かをしていますか(下にスクロールする)? IsolatedStorageを使用して上部/左/幅/高さを保存して復元するという点でhttp://msdn.microsoft.com/en-us/library/system.windows.window.top(v=VS.95).aspxまだそれは有効ですか?ウィンドウ内にあなたのプロパティのmax *がありますか?あなたはどんな解像度で走っていますか? –

+0

こんにちは@Aaron、はい、まさに私がやっていることです! (上端/左端をApplication_Exitに保存し、Application_Startupで読み込みます)。私の解像度は1280x800です。これは関連するかもしれませんが、私の問題を正確に記述していないかもしれません:http://forums.silverlight.net/forums/t/192180.aspx - Silverlightが手動でTop/Leftを設定するとき、ウィンドウにパディングを追加するようです。私は画面の下部に窓をあまりにも近づけないと受け入れる必要があるかもしれません。 –

1

このお試しください:

Window w = App.Current.MainWindow; 
    w.Width = 1; 
    w.Height = 1; 
    w.Left = 1108;   
    w.Top = 603; 
    w.Width = 160; 
    w.Height = 100; 

をしかし、あなたは、画面の大きさではなく、ために変更する必要があります。値をハードコーディングに基づいて `Left`と` Top`値を計算しなければならない

関連する問題