WPF按钮的XY坐标在运行时移动?

时间:2013-03-12 13:11:49

标签: c# wpf wpf-positioning

我的WPF应用程序有一个非常奇怪的行为:我在运行时的按钮的XY位置似乎与我在Visual Studio的xaml-Editor中设置它时的位置不同(btw是否有名称?)

它没有对齐设置或围绕它的面板,我只用边距设置它。我的按钮具有以下代码:

<Button Content="OK" Height="23" Margin="213,319,4,7" Name="button3" Width="75" IsCancel="True" Click="button3_Click" IsEnabled="False" />

修改

边距是固定的,因为它是一个不可调整大小的对话框。如您所见,按钮略微向左和向上移动:

XAML的编辑:

enter image description here

运行时:

enter image description here

为什么会这样,我该如何解决?

2 个答案:

答案 0 :(得分:0)

我想以下关于对齐,边距和填充概述的链接将帮助您了解它是如何工作的?

否则放置一个面板包装器,如Stackpanel,Wrappand或Grid。它适合处理控件的布局

编辑:问题在于ResizeMode =“NoResize”。如果你在Window标签中提取这个属性,那么对齐就好了

Link to Refer

答案 1 :(得分:0)

伙计,这是在WPF中设置UI元素位置的最糟糕方式!

将您的XAML重构为以下内容:

  <Grid Margin="5">
    <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <ListView Grid.Row="0" Name="TableList" Margin="5"/>

    <Button Grid.Row="1" Name="button3" Content="OK"
            Margin="5"
            Width="75"
            HorizontalAlignment="Right"/>
  </Grid>
你知道吗?有Grid处理其所有子项的位置(在本例中为ListViewButton)。

Button放在第二个Row上,与右侧(HorizontalAlignment属性)对齐。

Grid及其子女都有Margin=5。这保证了每个孩子的边际与平等的孩子和Grid之外的其他控件相同。

此外,ListViewButton完全一致。

您的方法存在的问题是,您将Button Width 设置为Left Margin 其{{1} }。也许总数不正确,因为Right Margin的边界吃了一些像素,或者只是WPF无法一起处理所有信息而错过了计算,谁知道,但后果是你必须至少保留一个参数。在我的例子中,我从窗口中释放了WindowMargins仅设置对其他控件的相对Margin=5尊重,但MarginButton左边界的距离是我留给WPF的内容图形引擎来计算。