这是Silverlight。
最初的目标是在Popup中显示一个随机元素,其中包含一些VerticalAlignment和HorizontalAlignment。我不想使用VerticalOffset或HorizontalOffset,因为我真正想要做的更多,包括一些复杂的绑定。
首次尝试是:
<Popup>
<Button
Height="135"
HorizontalAlignment="Stretch"
VerticalAlignment="Bottom" />
</Popup>
第二次尝试是:
<Popup
Height="135"
HorizontalAlignment="Stretch"
VerticalAlignment="Bottom">
<Button />
</Popup>
两者都失败了:Button始终位于Top而不是Stretch(HorizontalAlignment和VerticalAlignment不起作用)。
所以我有想法将元素封装在一个简单的FrameworkElement中:
<Popup>
<Border>
<Button
Height="135"
HorizontalAlignment="Stretch"
VerticalAlignment="Bottom" />
</Border>
</Popup>
它正在发挥作用。
但是我必须在此示例中使用Border
,当我可以使用Grid
和许多其他FrameworkElement
(但不能使用Canvas或Viewbox或Popup)时使用{{1}}。我想知道什么是最简单,高效和处理器友好的透明FrameworkElement,用工作HorizontalAlignment和VerticalAlignment封装另一个元素?是吗:
答案 0 :(得分:1)
WPF控件有两种形式:与用户交互的用户(如接受用户点击,如按钮,或显示文本块等文本)和控制前一个用户位置和布局的容器。
容器控制通常用于以特定方式布置他们的孩子。例如,Canvases通过X,Y,Width和amp;高度值。每个都有特定用途,因此您必须read the documentation or tutorials for these container controls并了解每个工作方式,以便为任务选择合适的一个。
在您的情况下,您希望按钮填充弹出窗口中的所有可用空间(似乎,它不是那么清楚)。我知道网格默认是这样做的。所以我会做以下事情:
<Popup><Grid><Button /></Grid></Popup>