繁体   English   中英

动态添加的控件未出现在预期的位置

[英]Dynamically added controls not appearing where expected

我有一个带有网格的页面。

基于对ComboBox的选择,我动态地添加了一个具有ContextMenu的GridView(到目前为止非常好)。

其中一个ContextMenuItem选项需要用户输入,因此我动态地构建控件并将其添加到Grid,并将Grid作为Grid的子级添加到Page上(同时我隐藏了Grid的第一个子级(GridView)) 。

控件未出现在预期位置。 如果我指定0,0,0,0,它们将出现在中间的某个位置。 如果我指定-800,-400、0,0,则它们会显示在我想要的位置附近,而不是期望的位置(网格本身是800x400)。

我想念什么吗?

我尝试过添加列和行并以这种方式指定位置。 我尝试过直接设置控件的边距。 似乎没有按预期工作。

谢谢

如果要精确定位控件,则应使用“ Canvas Grid旨在相对地定位控件,而您似乎正试图将它们绝对定位(在Grid )。

要放置控件,您可以采用多种方法。 您应该使用Canvas元素而不是Grid并在要定位的控件中设置LeftTop属性。 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 ,将VerticalAlignmentTop ,为WidthHeight指定适当的值,然后将Margin设置为x,y,0、0 示例代码:

<Grid>
    <Button x:Name="sampleButton" 
            HorizontalAlignment="Left" 
            VerticalAlignment="Top" 
            Width="30" Height="20" 
            Margin="30, 10, 0, 0"/>
</Grid>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM