我想归档一个包含UserControl的垂直ListView,其中左侧有一些信息,第二个ListView将水平滚动。
问题是我的第二个listview不会开始滚动。它似乎选择了无限的空间。
首先关于我的设置的更多信息:
我的窗口通过网格排列,基本上只有一行顶部带有文本,第一个列表视图位于第二行。
第一个listview使用如下的ItemTamplate:
<ListView.ItemTemplate>
<DataTemplate>
<controls:MyControl />
</DataTemplate>
</ListView.ItemTemplate>
除此之外,它还有一个ItemContainerStyle来显示项目之间的水平线:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem"
BasedOn="{StaticResource {x:Type ListViewItem}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<StackPanel>
<Rectangle x:Name="Separator"
Height="2"
SnapsToDevicePixels="True"
Fill="{DynamicResource AccentColorBrush}" />
<ContentPresenter />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
(禁用不必要的第一行省略的触发器)
MyControl是一个UserControl,它也只是一个网格第一列,一些文本和第二列是我的第二个列表视图。 这个是特别的,因为它是水平的。由于它们是互联网上的各种方法,我将展示我最终使用的那个。
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"
IsItemsHost="True"
IsVirtualizing="True"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
项目模板又是一个UserControl(目前只是一个TextBlock),再次是分隔线,但这次是垂直的。
问题是现在第二个ListView不可滚动。即使我明确地将它们设置为可见,它们也会被禁用(也可以在调整窗口大小之后)。
我解决这个问题的方法是将ListViewItem模板中的Stackpanel的MaxWidth绑定到我的MetroWindow的Actual。
MaxWidth="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type metroControls:MetroWindow}}}"
但是这个和其他一些尝试绑定不同大小的不同项目是行不通的 有人可以提示解决这个问题吗?