13

我只想将 windowstartuplocation 设置为桌面的右上角。现在要澄清一些事情,我看到这个线程有同样的问题:

更改 WPF 窗口的启动位置

现在我不想对他们所指的右或左感到困惑,我希望我的应用程序从右上角开始,其中右指的是我的右侧(不像我的桌面是一个看着我的人并且它的右侧)。所以,

1.)仅将左侧和顶部设置为 0 不是解决方案(将应用程序带到左侧而不是右侧)

2.)我尝试使用 SystemParameters.PrimaryScreenWidth,但我无法在绑定时执行从该值中减去我的应用程序宽度的操作。

有没有一种方法可以在不涉及太多复杂性的情况下做到这一点?

4

2 回答 2

25

有没有一种方法可以在不涉及太多复杂性的情况下做到这一点?

最简单的方法是手动设置起始位置,然后Left在后面的代码中设置属性:

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" 
    Height="500" Width="500"
    WindowStartupLocation="Manual" 
    Top="0">
</Window> 

在您后面的代码中:

public Window1()
{
    InitializeComponent();
    this.Left = SystemParameters.PrimaryScreenWidth - this.Width;
}

这是我觉得在代码中执行它的简单性超过了在后面引入代码的任何缺点的地方。

于 2012-09-25T20:20:32.200 回答
0

通过使用 WorkArea.Width 确保考虑到任务栏的宽度(当放置在一侧、左侧或右侧时)。通过使用 this.Width 或 this.MaxWidth 确保您的窗口永远不会滑出工作区域,但两者都需要设置它们的值(在 xaml 或后面的代码中)以不为 this.Left 生成值 NaN(不是数字) .

public MainWindow()
    {
        InitializeComponent();
        this.Left = SystemParameters.WorkArea.Width - this.MaxWidth;
    }

<Window
    ... more code here ...
    WindowStartupLocation="Manual" Top="0" MaxWidth="500" >
于 2018-02-08T16:09:12.757 回答