首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最简单的FrameworkElement处理HorizontalAlignment和VerticalAlignment?

最简单的FrameworkElement处理HorizontalAlignment和VerticalAlignment?
EN

Stack Overflow用户
提问于 2014-09-11 14:28:04
回答 1查看 196关注 0票数 0

这是银光。

最初的目标是在带有VerticalAlignment和HorizontalAlignment的弹出窗口中显示一个随机元素。我不想使用VerticalOffset或HorizontalOffset,因为我真正想要做的事情还有很多,包括一些复杂的绑定。

第一次尝试是:

代码语言:javascript
复制
<Popup>
    <Button
        Height="135"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Bottom" />
</Popup>

第二次尝试是:

代码语言:javascript
复制
<Popup
    Height="135"
    HorizontalAlignment="Stretch"
    VerticalAlignment="Bottom">
    <Button />
</Popup>

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

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

代码语言:javascript
复制
<Popup>
    <Border>
        <Button
            Height="135"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Bottom" />
    </Border>
</Popup>

而且起作用了。

但在本例中,我不得不使用Border,因为我可以使用Grid和许多其他FrameworkElement (但不是使用画布、视图框或弹出窗口)。我想知道什么是最简单、高效和对处理器友好的透明FrameworkElement,可以用工作的HorizontalAlignment和VerticalAlignment封装另一个元素?是:

  • 边境?(如上面的例子)
  • UserControl?
  • ContentControl?
  • ContentContainer?
  • 一些自定义和基本的MyFrameworkElement?(大多数基本实现可能需要帮助)
  • 像网格之类的东西?
EN

回答 1

Stack Overflow用户

发布于 2014-09-11 14:45:15

WPF控件有两种类型:与用户交互的控件(如接受用户的单击按钮,或像文本块一样显示文本)和控制先前控件的放置和布局的容器。

容器控件的设计通常是为了以一种特定的方式布局它们的孩子。例如,画布用X,Y,宽度和高度值来布置孩子。每个用户都有特定的用途,因此您必须使用阅读这些容器控件的文档或教程。并了解它们是如何工作的,以便为任务选择合适的用途。

在您的情况下,您希望按钮能够填充弹出窗口中的所有可用空间(看起来,并不清楚)。我知道默认情况下,Grid会这样做。因此,我要做以下几点:

代码语言:javascript
复制
<Popup><Grid><Button /></Grid></Popup>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25790099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档