我正在尝试将浏览器外 (OOB) Silverlight 应用程序移动到系统托盘上方的右下角。该应用程序的大小为 160x100。
我只是无法让它足够靠近屏幕底部。当我将“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!
}
}
如果 Window Style='Default' 的值大于 602,或者 Window Style='No Border' 的值大于 640,则忽略设置 App.Current.MainWindow.Top。
如果我将 'Top' 值设置为 603 以上,它只是默认为项目设置中的 Out-Of-Browser Settings 对话框中指定的 Top(在我的情况下为 50)。不会抛出异常。
'Left' 属性似乎没有这个问题:我可以设置 Left 将窗口向右移动到屏幕的右侧。
我正在使用 Windows XP SP3 和 Silverlight 4.0 / VS2010。我已选中“在浏览器外运行时需要提升信任”框。
为什么我不能在屏幕上进一步向下移动窗口?
有没有其他方法可以让我的窗口看起来“停靠”在屏幕的右下角?
谢谢!
更新: 我应该提到:
- 我已经检查了“浏览器外设置”对话框中的“手动设置窗口位置”框。在此处设置 Top/Left 属性(与在代码中相反),结果是相同的:如果我将 'Top' 设置为超过 640 的值(window style='No Border'),则窗口位于中间桌面,而不是在指定的坐标。
- 我并没有真正在我的应用程序中将 Top/Left 设置为硬编码值——我在上面的代码片段中这样做只是为了说明问题。在实际应用中,我让用户移动窗口,然后在应用退出时保存位置。
- 我想检测屏幕/桌面大小,但在 Silverlight 中找不到方法。