我只想将windowstartuplocation设置到桌面的右上角。现在要澄清一些事情,我看到这个帖子有同样的问题:
Changing the start up location of a WPF window
现在我不想对他们所说的右或左的内容感到困惑,我希望我的应用程序从右上角开始,右边指的是我的右侧(不像我的桌面是一个人看起来在我和它右边)。所以,
1.)仅将left和top设置为0不是解决方案(将应用程序带到左侧不对)
2.)我尝试使用SystemParameters.PrimaryScreenWidth,但我无法执行操作以在绑定时从此值中减去我的应用程序的宽度。
有没有办法可以做到这一点而不会变得太复杂?
答案 0 :(得分:18)
有没有办法可以做到这一点而不会变得太复杂?
最简单的方法是手动设置起始位置,然后在代码后面设置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;
}
在这个地方,我觉得在代码中执行它的简单性超过了引入代码背后的任何缺点。
答案 1 :(得分:0)
通过使用WorkArea.Width确保考虑任务栏的宽度(当放置在侧面,左侧或右侧时)。通过使用this.Width或this.MaxWidth确保您的窗口永远不会滑到工作区域之外,但两者都要求设置它们的值(在xaml或后面的代码中),以便不为此生成值NaN(非数字).Left
public MainWindow()
{
InitializeComponent();
this.Left = SystemParameters.WorkArea.Width - this.MaxWidth;
}
<Window
... more code here ...
WindowStartupLocation="Manual" Top="0" MaxWidth="500" >