2011-02-01 57 views
1

我正在嘗試將瀏覽器外(OOB)Silverlight應用程序移到系統托盤上方的右下角。該應用的尺寸爲160x100。如何將我的Silverlight OOB窗口放置在桌面的右下角?

我只是不能接近足夠的屏幕底部。當我將「Top」屬性設置爲特定值以上時,它被忽略。

例如在我的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,用於窗口樣式=「默認」設置App.Current.MainWindow.Top被忽略,或大於640對於Window Style ='無邊框'。

如果我在603以上設置'Top'值,它只是默默地默認爲項目設置(我的例子中爲50)的Out-Of-Browser Settings對話框中指定的Top。沒有例外被拋出。

'Left'屬性似乎沒有這個問題:我可以設置Left來將窗口向右移動到屏幕的右側。

我使用Windows XP SP3和Silverlight 4.0/VS2010。我檢查了'在瀏覽器外部運行時需要提升信任'框。

爲什麼我無法將窗口繼續向下移動到屏幕上?

是否有任何其他方法可以讓我的窗口顯示爲「停靠」在屏幕的右下角?

謝謝!

更新: 我應該提到:

  • 我已經檢查了「設置窗口中手動位置」對話框中的「外的瀏覽器設置」對話框。在這裏設置Top/Left屬性(而不是在代碼中),結果是一樣的:如果我將Top設置爲大於640的值(窗口樣式='無邊框'),則窗口置於中間而不是在指定的座標處。
  • 我並沒有在我的應用程序中真正設置頂部/左側的硬編碼值 - 我在上面的代碼片段中這樣做只是爲了說明問題。在實際的應用程序中,我讓用戶移動窗口,然後在應用程序退出時保存位置。
  • 我想檢測屏幕/桌面大小,但找不到在Silverlight中執行此操作的方法。
+0

你應該根據屏幕的大小來計算`Left`和`Top`值而不是硬編碼,將需要改變的值不同的屏幕分辨率 – ChrisF 2011-02-01 15:49:27

+0

謝謝@ChrisF,我應該提到(a)我不會在我的應用程序中硬編碼頂/左值,我只是在上面的代碼片段中做了解釋, (b)我想檢測屏幕/桌面大小,但找不到在Silverlight中執行此操作的方法。 – 2011-02-02 16:09:37

回答

1

您需要設置WindowStartupLocation to Manual

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

如果需要,您還可以通過後面的代碼訪問OutOfBrowserSettings.WindowSettings

1

試試這個:

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

但使用嘗試捕捉

相關問題