我正在嘗試將瀏覽器外(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中執行此操作的方法。
你應該根據屏幕的大小來計算`Left`和`Top`值而不是硬編碼,將需要改變的值不同的屏幕分辨率 – ChrisF 2011-02-01 15:49:27
謝謝@ChrisF,我應該提到(a)我不會在我的應用程序中硬編碼頂/左值,我只是在上面的代碼片段中做了解釋, (b)我想檢測屏幕/桌面大小,但找不到在Silverlight中執行此操作的方法。 – 2011-02-02 16:09:37