如何在WPF中的窗口中放置一个确切的位置?

时间:2017-07-04 14:01:43

标签: c# wpf xaml window

我正在尝试显示与现有组件对齐的窗口。在这个例子中,我想将它与一个按钮对齐。当我点击按钮时,我希望窗口自己定位,使其底部位于按钮上方,其宽度与按钮相同。窗口左侧应与按钮左侧相同。

为实现这一点,我使用以下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();
    }

当我点击按钮时,会显示一个窗口,如下图所示。

enter image description here

我的问题是:为什么窗口不像按钮那么宽,为什么它不在正确的位置?这几乎就好像窗户周围有一个看不见的框架。

1 个答案:

答案 0 :(得分:0)

试试这个:

UserDetailsService

它发生了窗口边框。如您所知,窗口是一个复合元素。我想当你设置宽度时,你设置工作空间的宽度,而不是整个窗口的宽度。