0

我在这里最好地解释了以下布局问题(为粗略的插图道歉)

在此处输入图像描述

假设每个控件都实现为单独的用户控件

我想要这样的行为,即扩展右上角(绿色)控件将呈现到视图中,扩展区域比初始(绿色)控件的宽度更宽,并直接出现在其下方,宽度等于第一行中的 2 个控件(例如 colspan of 2) 同时按下它下面的所有内容

假设最初有一个有 2 行的网格 ..第一行是一些控件,其次是可扩展控件 - 第二行可以有任何东西,可以填充 2 的 colspan ..可以是另一个布局容器或用户控件,里面有任何东西等.

如果绿色的可扩展控件是用户控件,我需要做什么才能获得我所描述的这种行为?

我想我需要设置容器的 Grid.Row 和 Colspan 附加属性,表示从用户控件内部扩展内容(?)到用户控件所在的布局网格?(但是我如何将用户控件内的控件的附加属性设置为用户控件外的布局容器 - 特别是如果扩展内容本身位于用户控件内的网格​​内)。

即使我能做到这一点,这也将非常脆弱,因为它只有在控件位于网格布局容器中时才会起作用。

有任何想法吗?不必使用网格,但这似乎是解决它的自然/明显的方法?

4

1 回答 1

1

不久前我有一个类似的布局。这对我有用:

  • 在绿色控件上,为您需要的大小创建依赖属性。在这种情况下,我期望全宽(下矩形)和窄宽度(上矩形)。
  • 在顶级容器中,您创建一个用于测量尺寸的网格。所以你会得到这样的东西:

    <Grid x:Name="fullSize">
         <ColumnDefinition/>
         <ColumnDefinition x:Name="halfSize"/>
    </Grid>
    

在这里,您可以以适当的方式划分列的宽度。- 然后,绑定用这个网格测量的宽度

   <foo:GreenControl
         FullWidth={Binding ElementName=fullSize, Path=ActualWidth}
         NarrowWidth={Binding ElementName=halfSize, Path=ActualWidth}
   />

现在,GreenControl 可以将其宽度设置为所需的任何值,例如在值更新的处理程序中。在我的例子中,我将 XAML 中的元素绑定到依赖道具。

于 2012-11-16T08:31:04.963 回答