2010-01-27 69 views
1

我的用户控件有两个子控件,一个列表和一个细节。WPF:布局问题

  • 当在列表中选择任何内容,我想要列表填充整个控制
  • 当选择的东西,我想列表,以填补上半部分和细节控制的下半部分。

动态改变细节控制的可见性很容易。我坚持的是如何调整列表的大小。

回答

1

斯坦尼斯拉夫给了我一个主意。使用两行网格,但不要设置高度。取而代之的是在屏幕的两个半边都有上部控制RowSpan。

上控制:

Grid.RowSpan="{p:PyBinding 1 if ($[MainList.SelectedIndex] > -1) else 2}" 

下控制:

Visibility="{p:PyBinding BooleanToVisibility($[MainList.SelectedIndex] > -1)}" 
0

你能不能把这个列表放在<Border><Grid>之内,而只是调整它呢?或者如果你想要滚动条,你可以把它放在<ScrollViewer>之内。

+0

你会如何写resizeing逻辑是什么? – 2010-01-27 09:09:01

1

如何更改可视性?如果你把你的子控件在网格中具有以下RowDefinitions:

<Grid.RowDefinitions> 
    <RowDefinition/> 
    <RowDefinition Height="Auto"/> 
</Grid.RowDefinitions> 

与列表中的第一行和细节控制在第二设置,然后详细控制应自动调整名单Visibility = Collapsed

+0

如果你这样做,下层控制器应该如何知道自己有多大? – 2010-01-27 09:04:40

+0

我在答案中假定了固定高度。你是否需要它是容纳控件的一半大小?您可以使用一个转换器绑定到网格的ActualHeight属性,该转换器将传递给它的任何值减半。请张贴你想要做的事情的草图 - 修改它比猜测更容易。 – 2010-01-27 09:20:36

+0

我不知道一个ActualHeight属性。这可以工作。 – 2010-01-27 16:56:49