UserControl与垂直ListView中的水平ListView

时间:2014-09-05 08:35:32

标签: c# wpf xaml listview mahapps.metro

我想归档一个包含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}}}"

但是这个和其他一些尝试绑定不同大小的不同项目是行不通的 有人可以提示解决这个问题吗?

0 个答案:

没有答案