【问题标题】:Listbox/listview vertical scrollbar does not show (horizontal yes)列表框/列表视图垂直滚动条不显示(水平是)
【发布时间】:2016-01-08 09:11:56
【问题描述】:

我在 xaml 中定义了一个列表框,如下所示:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="21" />
  <ColumnDefinition Width="*" />
  <ColumnDefinition Width="23" />
  <ColumnDefinition Width="23" />
  <ColumnDefinition Width="23" />
  <ColumnDefinition Width="4" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
  <RowDefinition Height="26" />
  <RowDefinition Height="*" />
  <RowDefinition Height="4" />
</Grid.RowDefinitions>


<ListBox x:Name="AInLb" Margin="8,6,8,8" BorderBrush="Gray" Grid.Row="1" Grid.ColumnSpan="6" Grid.RowSpan="2" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
  <ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
      <Setter Property="IsSelected" Value="{Binding Content.IsSelected, Mode=TwoWay, RelativeSource={RelativeSource Self}}"/> 
      <Setter Property="Template"> 
        <Setter.Value> 
          <ControlTemplate TargetType="ListBoxItem"> 
            <ContentPresenter/> 
          </ControlTemplate>
        </Setter.Value> 
      </Setter>
    </Style>
  </ListBox.ItemContainerStyle>
  <ListView x:Name="AInfoLv" FontFamily="Khmer UI" Background="White" BorderBrush="{x:Null}" BorderThickness="0" Foreground="Black">
    <ListView.View>
      <GridView>
        <GridViewColumn x:Name="LabelColumn" Header="Label" Width="110" DisplayMemberBinding="{Binding Path=Label}" />
        <GridViewColumn x:Name="ValueColumn" Header="Value" Width="140" DisplayMemberBinding="{Binding Path=Value}" />
      </GridView>
    </ListView.View>
    <ListView.ItemContainerStyle>
      <Style TargetType="{x:Type ListViewItem}">
        <Setter Property="Template">
          <Setter.Value> 
            <ControlTemplate TargetType="{x:Type ListViewItem}">
              <Border BorderBrush="Transparent" BorderThickness="1" Background="{TemplateBinding Background}">
                <GridViewRowPresenter/> 
              </Border>
            </ControlTemplate> 
          </Setter.Value>
        </Setter> 
        <Style.Triggers>
          <DataTrigger Binding="{Binding Path=Label}" Value="Login"> 
            <Setter Property="FontWeight" Value="Bold"/> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding Path=Label}" Value="Skill(s)">
            <Setter Property="FontWeight" Value="Bold"/> 
          </DataTrigger>
        </Style.Triggers>
      </Style>
    </ListView.ItemContainerStyle>
  </ListView>
</ListBox>

列表框和列表视图的高度和宽度都设置为自动。当内容超过列表框的高度和宽度时,水平滚动条可以正常工作,但垂直滚动条不显示。

更新: 包含@Dom 的建议。

更新 2: 在为listbox 设置Height 限制之后。

【问题讨论】:

  • ListBox 如果启用垂直滚动,则不会限制其项目高度,因此您的 ListView 项目可以增长到容纳所有项目所需的高度,因此您将永远不会在您的ListView 项目。为什么ListBox 上没有出现滚动条是另一个问题。似乎在视觉树的某个地方(ListBox 父母之一)是另一个不限制其子级高度的面板,例如 StackPanel 或 Canvas

标签: c# wpf listview listbox scrollbar


【解决方案1】:

通过为ListBox 设置ScrollViewer.CanContentScroll="False" 解决了这个问题。 Reference.

【讨论】:

    【解决方案2】:

    ListView 是一个 ScrollViewer。您需要启用它:

    <ListView ScrollViewer.CanContentScroll="True" 
     Scro
    

    【讨论】:

    • 嗨@Dom,感谢您的建议,但它对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2018-11-24
    相关资源
    最近更新 更多