0

我的 WPF 应用程序有一个非常奇怪的行为:我的按钮在运行时的 XY 位置似乎与我在 Visual Studio 的 xaml 编辑器中设置它时的位置不同(顺便说一句,它有名称吗?)

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

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

编辑:

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

xaml 编辑器:

在此处输入图像描述

运行:

在此处输入图像描述

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

4

2 回答 2

0

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

否则放置面板包装器,例如 Stackpanel、Wrappand 或 Grid。它适用于控件的布局

编辑:问题出在 ResizeMode="NoResize" 上。如果您在 Window 标记中删除此属性,则对齐会很好

参考链接

于 2013-03-12T13:23:28.117 回答
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处理其所有孩子的位置(在本例中为 aListView和 a Button)。

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

Grid和它的孩子都有Margin=5。这保证了每个孩子的边距对于 aiacent 孩子和Grid.

此外, theListView和 theButton完美对齐。

您的方法的问题是您设置了Button Width and itsLeft Margin its Right Margin。也许总数不正确,因为边框Window吃掉了一些像素,或者只是 WPF 无法同时处理所有信息而错过了计算,谁知道呢,但结果是您必须至少保留一个参数 free。在我的示例中,我离开Margins了窗口。这些Margin=5仅设置相Margin对于其他控件的相对尊重,但Button距离左边框的距离Window是我留给 WPF 图形引擎计算的。

于 2016-08-31T11:59:29.043 回答