我只是创建自己的AboutBox,我使用Window.ShowDialog()调用它
如何让它相对于主窗口定位,即从顶部开始20px并居中.
谢谢.
这是窗口声明:
<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死亡中心.
所以我的问题是:
这里发生了什么??? …