【问题标题】:WPF - Create solid layout without designerWPF - 在没有设计器的情况下创建实体布局
【发布时间】:2019-05-15 05:11:50
【问题描述】:

我是盲人,我想使用 WPF,因为它在许多方面更易于访问。但是,无法访问用于在屏幕上定位元素的设计器。
在 Winforms 中,我使用每个控件的大小和位置属性来排列它们,使它们不会在屏幕上重叠。这与逻辑有关,而不是视觉,所以进展得相当顺利。
但是,在 WPF 中,情况有些不同。我知道有几个布局容器,如 Dockpanel、Stackpanel 等。但是我不确定它们是否会阻止控件重叠。
所以我的问题是:如果你看不到,你将如何安排控件以确保它们不重叠?您会使用哪些布局控件?

【问题讨论】:

  • 好兄弟!虽然很难明确回答这个问题,但我可以推荐几件事。例如,如果您坚持使用像 Grid 这样的带有行和列的面板,并避免像 Canvas 这样的元素,为您的布局基础设置硬设置边距或变换,那应该让您保持可预测性。然而无论哪种方式,这都是一个非常有趣的问题!
  • 我需要将控件添加到特定(组)的列和行中,以防止它们重叠,对吗?还是系统会自动执行此操作?

标签: c# wpf layout autolayout accessibility


【解决方案1】:

在 WPF 中放置控件而不重叠控件的最简单方法是使用<Grid.RowDefinitions><Grid.ColumnDefinitions>。 您可以使用固定或相对值(使用“*”)定义宽度和高度。 为了获得良好而简单的解释,我可以推荐这两个网站:

在网格中,您可以再次放置其他控件、面板甚至其他具有自己的行和列定义的网格,从而实现创意设计。

【讨论】:

  • 太棒了!你发布的文章给了我一些关于该做什么的想法。现在再一次,这比视觉更符合逻辑。整洁!
【解决方案2】:

是的,它们会防止控件重叠。这实际上是 WPF 的一个优点:它的容器将控件相对于彼此和其他控件放置,因此它们不会重叠和调整大小或在窗口调整大小时移动。如果控件的大小将超过容器的大小,则控件的一部分将被隐藏,而不是与它的邻居重叠。这与任何容器有关,除了画布,其中元素按绝对坐标放置。

【讨论】:

  • 也谢谢你。我现在看看我是否可以实现可靠的布局:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 2016-12-05
  • 1970-01-01
相关资源
最近更新 更多