我的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的编辑:
运行时:
为什么会这样,我该如何解决?
答案 0 :(得分:0)
我想以下关于对齐,边距和填充概述的链接将帮助您了解它是如何工作的?
否则放置一个面板包装器,如Stackpanel,Wrappand或Grid。它适合处理控件的布局
编辑:问题在于ResizeMode =“NoResize”。如果你在Window标签中提取这个属性,那么对齐就好了
答案 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
处理其所有子项的位置(在本例中为ListView
和Button
)。
Button
放在第二个Row
上,与右侧(HorizontalAlignment
属性)对齐。
Grid
及其子女都有Margin=5
。这保证了每个孩子的边际与平等的孩子和Grid
之外的其他控件相同。
此外,ListView
和Button
完全一致。
您的方法存在的问题是,您将Button
Width
和设置为Left Margin
和其{{1} }。也许总数不正确,因为Right Margin
的边界吃了一些像素,或者只是WPF无法一起处理所有信息而错过了计算,谁知道,但后果是你必须至少保留一个参数。在我的例子中,我从窗口中释放了Window
。 Margins
仅设置对其他控件的相对Margin=5
尊重,但Margin
离Button
左边界的距离是我留给WPF的内容图形引擎来计算。