处理HorizontalAlignment和VerticalAlignment的最简单的FrameworkElement

本文关键字:最简单 FrameworkElement VerticalAlignment HorizontalAlignment 处理 | 更新日期: 2023-09-27 18:21:36

这就是Silverlight。

最初的目标是在弹出菜单中显示一个带有一些垂直对齐和水平对齐的随机元素。我不想使用VerticalOffset或HorizontalOffset,因为我真正想做的还有更多,包括一些复杂的绑定。

第一次尝试是:

<Popup>
    <Button
        Height="135"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Bottom" />
</Popup>

第二次尝试是:

<Popup
    Height="135"
    HorizontalAlignment="Stretch"
    VerticalAlignment="Bottom">
    <Button />
</Popup>

两者都是失败的:按钮总是在顶部,而不是拉伸(HorizontalAlignment和VerticalAlignment不起作用)。

因此,我有了将元素封装在一个简单的FrameworkElement中的想法:

<Popup>
    <Border>
        <Button
            Height="135"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Bottom" />
    </Border>
</Popup>

它正在发挥作用。

但在这个例子中,我不得不使用Border,而我本可以使用Grid和许多其他FrameworkElement(但不能使用Canvas、Viewbox或Popup)。我想知道用HorizontalAlignment和VerticalAlignment封装另一个元素最简单、最高效、对处理器友好的透明FrameworkElement是什么?是吗

  • 边界?(就像上面的例子一样)
  • UserControl
  • ContentControl
  • ContentContainer
  • 一些自定义和基本的MyFrameworkElement?(最基本的实现可能需要帮助)
  • 其他类似网格的东西

处理HorizontalAlignment和VerticalAlignment的最简单的FrameworkElement

WPF控件有两种风格:一种是与用户交互的控件(比如像按钮一样接受用户点击,或者像文本块一样显示文本),另一种是控制前一个控件的位置和布局的容器。

容器控件通常被设计为以特定的方式布置其子对象。例如,画布按X、Y、Width&高度值。每个控件都有特定的用途,因此您必须阅读这些容器控件的文档或教程,并了解每个控件的工作原理,才能为任务选择合适的控件。

在您的情况下,您希望该按钮填充弹出窗口中的所有可用空间(似乎不太清楚)。我知道网格默认情况下会这样做。所以我会做以下事情:

<Popup><Grid><Button /></Grid></Popup>