相关疑难解决方法(0)

WPF - 设置相对于主窗口的对话窗口位置?

我只是创建自己的AboutBox,我使用Window.ShowDialog()调用它

如何让它相对于主窗口定位,即从顶部开始20px并居中.

谢谢.

wpf position window

20
推荐指数
1
解决办法
3万
查看次数

为什么WindowStartupLocation = CenterScreen将我的窗口放在除屏幕中心之外的某个位置?

这是窗口声明:

<Window
    x:Class="Pse.ExperimentBase.SplashWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Style="{StaticResource _windowStyle}"
    WindowStartupLocation="CenterScreen"
    WindowStyle="None">
Run Code Online (Sandbox Code Playgroud)

这是样式声明:

<Style
    x:Key="_windowStyle"
    TargetType="Window">
    <Setter
        Property="Width"
        Value="{Binding Path=InitialWindowWidth}" />
    <Setter
        Property="Height"
        Value="{Binding Path=InitialWindowHeight}" />
    <Setter
        Property="Icon"
        Value="Resources/MyIcon.ico" />
    <Setter
        Property="Background"
        Value="{StaticResource _fadedOrangeBrush}" />
    <Setter
        Property="FontSize"
        Value="11" />
</Style>
Run Code Online (Sandbox Code Playgroud)

讨论:

屏幕为1280 X 1024.窗口大小(由InitialWindowWidth,InitialWindowHeight绑定确定)为800 X 600.

窗口打开时,它显示188,141(左,上).这基本上应该是"西北".如果我计算真正的居中值,它应该是240,212(左,上).

线索?

它始终是第一个出现问题的窗口.如果我打开同一窗口的第二个实例,它将显示在正确的位置.

另一个线索?

如果我在打开第一个实例之前创建两个实例,则第二个窗口实例将显示在正确的位置.

所以...

Window win1 = windowFactory.CreateSplashWindow();
win1.Show();
Window win2 = windowFactory.CreateSplashWindow();
win2.Show();
win1.Hide();
Run Code Online (Sandbox Code Playgroud)

...抵消win1和win2

但...

Window win1 = windowFactory.CreateSplashWindow();
Window win2 = windowFactory.CreateSplashWindow();
win1.Show();
win2.Show();
win1.Hide();
Run Code Online (Sandbox Code Playgroud)

...抵消win1,但显示win2死亡中心.

所以我的问题是:

这里发生了什么??? …

wpf xaml

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

wpf ×2

position ×1

window ×1

xaml ×1