我的页面上有一个网格。
根据ComboBox的选择,我动态添加一个具有ContextMenu的适当GridView(到目前为止一直很好)。
其中一个ContextMenuItem选项需要用户输入,因此我动态构建并向Grid添加控件,并将Grid作为Grid的子节点添加到页面上(同时隐藏Grid的第一个子节点( GridView的))。
控件未出现在预期位置。如果我指定0,0,0,0它们出现在中间的某个地方。如果我指定-800,-400,0,0,它们会显示在我想要的位置附近,但不是预期的位置(网格本身是800x400)。
我错过了什么吗?
我尝试过添加列和行并指定位置。我已经尝试直接设置控件的边距。似乎没有什么能像预期的那样发挥作用。
由于
答案 0 :(得分:1)
如果准确定位控件,则应使用Canvas
。 Grid
旨在相对定位控件,而看起来你正试图绝对定位它们(在Grid
内)。
答案 1 :(得分:0)
要定位控件,您可以通过多种方式执行此操作。您应该使用Canvas
元素而不是Grid
,并在要定位的控件中设置Left
和Top
属性。
在XAML中示例以在(30,10)中放置按钮:
<Canvas>
<Button x:Name="sampleButton"
Width="30" Height="20"
Canvas.Left="30"
Canvas.Top="10"/>
</Canvas>
代码背后的示例:
...
Canvas.SetLeft(sampleButton, 30);
Canvas.SetTop(sampleButton, 10);
...
但是,如果您需要使用Grid
(出于某种原因),可以将HorizontalAlignment
设置为Left
,将VerticalAlignment
设置为Top
, Width
和Height
的适当值以及THEN将边距设置为 x,y,0,0 。
示例代码:
<Grid>
<Button x:Name="sampleButton"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="30" Height="20"
Margin="30, 10, 0, 0"/>
</Grid>