Как разместить мое окно Silverlight OOB в правом нижнем углу рабочего стола? - PullRequest
1 голос
/ 01 февраля 2011

Я пытаюсь переместить приложение Silverlight вне браузера (OOB) в правый нижний угол над системным блоком. Размер приложения - 160х100.

Я просто не могу подойти достаточно близко к нижней части экрана. В тот момент, когда я устанавливаю свойство «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!
    }
}

Настройка App.Current.MainWindow.Top игнорируется, если значение больше 602 для стиля окна = «По умолчанию» или больше 640 для стиля окна = «Нет границы».

Если я установил значение «Top» выше 603, оно просто по умолчанию будет использовать значение «Top», указанное в диалоговом окне «Out-Of-Browser Settings» в настройках проекта (в моем случае 50). Исключение не выбрасывается.

Похоже, что свойство 'Left' не имеет этой проблемы: я могу установить Left, чтобы переместить окно вправо вверх по правой стороне экрана.

Я использую Windows XP SP3 и Silverlight 4.0 / VS2010. Я установил флажок «Требовать повышенное доверие при работе вне браузера».

Любая причина, почему я не могу переместить мое окно дальше вниз на экране?

Есть ли другой способ заставить мое окно казаться "пристыкованным" в правом нижнем углу экрана?

Спасибо!

Обновление: Я должен был упомянуть:

  • Я установил флажок «Задать местоположение окна вручную» в диалоговом окне «Настройки вне браузера». Устанавливая свойства Top / Left здесь (в отличие от кода), результат будет таким же: если я установлю для Top значение выше 640 (window style = 'No Border'), то окно будет посередине рабочего стола, а не по указанным координатам.
  • На самом деле я не устанавливаю в верхнем / левом углу жестко заданные значения в своем приложении - я сделал это в приведенном выше фрагменте кода, чтобы проиллюстрировать проблему. В реальном приложении я позволяю пользователю перемещать окно, а затем сохраняю позицию при выходе из приложения.
  • Я бы хотел определить размер экрана / рабочего стола, но не смог найти способ сделать это в Silverlight.

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Попробуйте:

    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

1 голос
/ 01 февраля 2011

Вам необходимо установить WindowStartupLocation на Manual .

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

Вы также можете получить доступ к OutOfBrowserSettings.WindowSettings через код, если необходимо.

...