【发布时间】:2013-10-21 08:21:49
【问题描述】:
我有一个 ItemsControl,在 Expander 内有一个 DataGrid 作为 ItemTemplate。
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding SomeItemSource}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander>
<Grid>
<DataGrid ItemsSource="{Binding SomeItemSource}"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
MaxHeight="200">
</DataGrid>
</Grid>
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
我希望每个 DataGrid 都有一个 ScrollViewer,如果扩展器列表太多,我希望有一个 ScrollViewer。我的问题是它只有在我设置 DataGrid 的 MaxHeight 属性时才有效。这很烦人,因为如果有例如ItemsControl 中只有一个条目,该条目没有使用整个空间,因为它的高度是有限的。
有人有想法吗?
【问题讨论】:
-
如果您不通过
Height属性告诉它,您如何期望内部ScrollViewers 知道何时添加滚动条?Expander将允许它像其他情况一样增长。 -
这就是我问的原因。我不知道方法,但也许其他人做到了。当只有一个条目时,考虑一种计算 MaxHeight 的行为。但也许这有点尴尬。
-
好吧,让我换个说法……如果你不告诉他们何时通过设置
Height(或@987654327),内部ScrollViewers 将不知道何时添加滚动条@ 或MinHeight) 属性。 -
我明白这一点。我提到当用户调整应用程序大小或 ItemsControl 中只有一个条目时,通过行为原因计算 MaxHeight 可能有一些未使用的空白。这就是我考虑行为的原因:计算 MaxHeight;取决于外部网格的高度。
标签: wpf xaml datagrid expander