ListView未启用ScrollViewer

6

我在UserControl中有一个ListView控件。但是,当内容超出ListView的大小时,垂直ScrollBar没有被启用,尽管在XAML中已经设置。

enter image description here

XAML如下:

<UserControl x:Class="GrandSuccessProject.View.ContactsView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="367" d:DesignWidth="548" Background="{x:Null}" VerticalContentAlignment="Top">

<ListView ScrollViewer.CanContentScroll="True" 
          ScrollViewer.VerticalScrollBarVisibility="Visible" 
          ItemsSource="{Binding SelectedContacts}"  
          ItemContainerStyle="{StaticResource ContainerStyle}" 
          Grid.Row="1" 
          VerticalAlignment="Top" 
          VerticalContentAlignment="Top" />      
   
</UserControl>

我也尝试将ListView放在ScrollViewer中分组,但仍然无法正常工作。
非常感谢您的提前帮助 :)

由于我无法使用给定的代码重现此问题,您是否可以构建一个可以重现问题的示例呢?如果您尝试简化它,甚至可能会自己发现问题所在。 - H.B.
2个回答

6
这似乎是:
  1. ListView占用了所有需要的空间,因此滚动被禁用。
  2. ListView超出了其容器的边界。
所以我会认为容器没有限制ListView的大小,你把它放在哪里了?确保容器使用限制来布置控件。

你说得完全正确,如果我为ListView保留一个固定像素高度,滚动条就会起作用。 - Marshal
@Marshal:有些问题,但是没有完整的上下文很难判断,UserControl 上设置了哪些属性? - H.B.
@Marshal:显然,设计高度限制了大小并可能导致溢出,但这也会在运行时失败,不是吗? - H.B.
我的意思是,如果我将ListView的高度限制为“150”,它就会起作用,滚动条也会启用。 - Marshal
@Marshal:是的,正如我所说,ListView 的大小需要受到限制,通常容器默认会这样做。抱歉,我在这里有些迷茫... - H.B.
显示剩余2条评论

0
我解决了这个问题,通过从MainWindow传递高度和宽度到Usercontrol:
 <UC:UC Width="{Binding ElementName=GridMainWindow, Path=ActualWidth}" 
    Height="{Binding ElementName=GridMainWindow, Path=ActualHeight}"/>

在用户控件内,我像这样定义了一个GridView:

<Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" /> <!--This inherith from the window-->
</Grid.ColumnDefinitions>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接