【发布时间】:2016-08-07 18:35:48
【问题描述】:
我有一个 ItemsControl,它的 ItemsSource 绑定到一个项目列表。每个项目的大小尽可能小,我需要的是控件和控件中的项目拉伸以适应所有可用空间。
我尝试在控件及其项目(使用样式)上将 VerticalAlignment 设置为 Stretch。我还尝试将 ItemsControl 包装在 DockPanel 中,并将 ItemsControl 停靠在底部。如何让 ItemsControl 动态调整大小?
还有一些(但不是全部)项目的可见性设置为折叠(通过相同的样式)。这会成为需要如何完成的一个因素吗?
<DockPanel HorizontalAlignment="Stretch">
<ItemsControl DockPanel.Dock="Bottom"
ItemsSource="{Binding Owner.LoadPointCharts}"
HorizontalAlignment="Stretch"
x:Name="ItemsControl">
<ItemsControl.ItemContainerStyle><!--Height="{Binding Path=Height, RelativeSource={RelativeSource AncestorType={x:Type DockPanel}}}"-->
<Style TargetType="ContentPresenter">
<Setter Property="VerticalAlignment"
Value="Stretch" />
<Setter Property="Visibility">
<Setter.Value>
<MultiBinding Converter="{StaticResource CompareIndexToVisibilityConverter}">
<Binding Path="Index" />
<Binding Path="SelectedIndex" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style >
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</DockPanel>
【问题讨论】:
-
不确定你的意思。默认情况下,我的 ItemsControl 中的项目是垂直拉伸的。您的 ItemTemplate 看起来如何?
-
ItemTemplate 没有变化。 ContentPresenter 绑定到具有 DataTemplate 的对象,该对象是使用 DataTemplate 的模板(根据 MVVM)。 DataTemplate 属于 WPF 工具包图表控件。我也将 VerticalAlignment 设置为 that 的 Stretch。
-
如果您将 DataTemplate 替换为仅具有例如一个文本块。然后设置 TextBlock 背景。
-
@Clemens 我做到了。它尽可能小而不超出内容。
-
你也可以设置 DockPanel 的背景,看看它是否真的被拉伸了。
标签: wpf xaml resize itemscontrol