用于扩展器中列表视图的垂直滚动条

时间:2017-12-07 11:28:01

标签: c# wpf listview

我有一个网格(用户控件),如下所示,行1:5为Expander,其中包含ListView,但是我尝试获取ListView的垂直滚动条Expander内部没有成功。

<Grid.RowDefinitions>
    <RowDefinition Height="50"></RowDefinition>
    <RowDefinition Height="*"></RowDefinition> <!--Expander with ListView-->
    <RowDefinition Height="*"></RowDefinition> <!--Expander with ListView-->
    <RowDefinition Height="*"></RowDefinition>
    <RowDefinition Height="*"></RowDefinition>
    <RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>

Expander ListView如下所示,我还尝试将Expander括在ScrollViewer中,但随后折叠标题的大小占用了所有空间

<Expander IsExpanded="True"
          Background="#1F4762"
          BorderBrush="#1F4762"
          Foreground="#FFEEEEEE"
          Grid.Row="1"
          Visibility="{qc:Binding '$P.View.Count > 0 ? Visibility.Visible: Visibility.Collapsed', P={Binding AListCVS}}"
          BorderThickness="1,1,1,0">
    <Expander.Header>
            <TextBlock FontWeight="Bold"
                       VerticalAlignment="Center"
                       Margin="5"
                       FontSize="14"
                       Width="200">
                <Run Text="A Listers : " />
                <Run Text="{Binding AListCVS.View.Count, Mode=OneWay}"></Run>
            </TextBlock>
    </Expander.Header>
    <Expander.Content>
    <ListView 
              HorizontalContentAlignment="Stretch"
              AlternationCount="2"
              Style="{StaticResource aCompareTemplate}"
              ItemTemplateSelector="{StaticResource ATemplateSelector}"
              x:Name="lview"
              ItemsSource="{Binding AListCVS.View}"
              Visibility="{Binding }">
    </ListView>
    </Expander.Content>
</Expander

列表模板如下

 <Style x:Key="aCompareTemplate"
    TargetType="ListView">
<!--Control Template-->
<Setter Property="Template">
<Setter.Value>
    <ControlTemplate TargetType="ListView">
        <Grid HorizontalAlignment="Stretch">
            <Grid.RowDefinitions>
                <RowDefinition Height="40"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid Grid.Row="0"
                  MinWidth="900"
                  VerticalAlignment="Center"
                  Background="#D4E3F4">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="50"></ColumnDefinition>
                    <ColumnDefinition MinWidth="200"></ColumnDefinition>
                    <ColumnDefinition MinWidth="400"></ColumnDefinition>
                    <ColumnDefinition Width="200*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Border Grid.Column="0"
                        Height="30">
                    <TextBlock Text=""
                               FontWeight="Bold"
                               VerticalAlignment="Center"
                               HorizontalAlignment="Center"
                               TextWrapping="Wrap" />
                </Border>
                <Border Grid.Column="1"
                        Height="30">
                    <TextBlock Text=""
                               FontWeight="Bold"
                               HorizontalAlignment="Left"
                               VerticalAlignment="Center" />
                </Border>
                <Border Grid.Column="2"
                        Height="30">
                    <TextBlock Text="A Data"
                               FontWeight="Bold"
                               HorizontalAlignment="Left"
                               VerticalAlignment="Center" />
                </Border>
                <Border Grid.Column="3"
                        Height="30">
                    <TextBlock Text="B Data"
                               FontWeight="Bold"
                               HorizontalAlignment="Left"
                               VerticalAlignment="Center" />
                </Border>
            </Grid>
            <ItemsPresenter Grid.Row="1"></ItemsPresenter>
        </Grid>
    </ControlTemplate>
</Setter.Value>
</Setter>        

非常感谢任何指针。

1 个答案:

答案 0 :(得分:1)

通常Scroll的问题是由于插入它的容器允许无限大小,因此它不会出现。您可以通过将MaxHeight设置为Grid.Row或ListView来纠正此问题。

编辑。: 正如@FelixD所建议的那样。并且正如我上面的评论有助于解决我在这里提出的问题,所以问题可以标记为已解决。