1

我正在尝试将浏览器外 (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 中找不到方法。
4

2 回答 2

1

您需要将WindowStartupLocation 设置为 Manual

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

如果需要,您还可以访问OutOfBrowserSettings.WindowSettings后面的 via 代码。

于 2011-02-01T16:01:01.250 回答
1

尝试这个:

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

但使用 try catch

于 2011-09-16T10:24:32.990 回答