我正在尝试将浏览器外(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