我正在尝试显示与现有组件对齐的窗口。在这个例子中,我想将它与一个按钮对齐。当我点击按钮时,我希望窗口自己定位,使其底部位于按钮上方,其宽度与按钮相同。窗口左侧应与按钮左侧相同。
为实现这一点,我使用以下xaml:
<Window x:Class="WindowPositioningTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WindowPositioningTest"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Name="MyButton" Content="Click me to see window!" Width="300" Height="50" Click="Button_Click"/>
</Grid>
onclick函数如下所示:
private void Button_Click(object sender, RoutedEventArgs e)
{
var window = new Window();
var myButtonLocation = MyButton.PointToScreen(new Point(0, 0));
window.Width = MyButton.ActualWidth;
window.Height = 300;
window.Left = myButtonLocation.X;
window.Top = myButtonLocation.Y - window.Height;
window.Show();
}
当我点击按钮时,会显示一个窗口,如下图所示。
我的问题是:为什么窗口不像按钮那么宽,为什么它不在正确的位置?这几乎就好像窗户周围有一个看不见的框架。
答案 0 :(得分:0)
试试这个:
UserDetailsService
它发生了窗口边框。如您所知,窗口是一个复合元素。我想当你设置宽度时,你设置工作空间的宽度,而不是整个窗口的宽度。