C# 如果单个项目超出控件高度,WPF Listbox将无法显示内容
当单个项目大于列表框的大小时,如何使列表框滚动条工作 我有一个带有自定义ItemTemplate的列表框。该模板显示用于记笔记的消息和时间戳。问题是,如果操作员创建了一个很长的便笺,则列表框滚动条不会出现,并且不允许您上下滚动查看整个便笺。对于几个小音符,该控件可以完美地工作。如果在大便笺之后添加小便笺,则会出现滚动条,您可以向下滚动,但无法看到整个第一个便笺,仅看到之前和之后可见的部分,滚动时它会捕捉到下一个便笺C# 如果单个项目超出控件高度,WPF Listbox将无法显示内容,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,当单个项目大于列表框的大小时,如何使列表框滚动条工作 我有一个带有自定义ItemTemplate的列表框。该模板显示用于记笔记的消息和时间戳。问题是,如果操作员创建了一个很长的便笺,则列表框滚动条不会出现,并且不允许您上下滚动查看整个便笺。对于几个小音符,该控件可以完美地工作。如果在大便笺之后添加小便笺,则会出现滚动条,您可以向下滚动,但无法看到整个第一个便笺,仅看到之前和之后可见的部分,滚动时它会捕捉到下一个便笺 <ListBox Grid.Row="1" ItemsSource="{B
<ListBox Grid.Row="1" ItemsSource="{Binding Notes}" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Margin="1" Padding="5" BorderThickness="1" BorderBrush="SteelBlue" CornerRadius="3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding CreatedDateTime, StringFormat={}{0:h:mm:ss tt}}" Margin="0,0,20,0"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Note}" TextWrapping="Wrap" FontSize="20"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
帮助解释的图片
我尝试了ScrollViewer,但最终导致了额外的问题。我必须开始发送滚动事件,而不是触摸事件等 最后,我找到了一个简单的属性来设置。 在列表框上设置“ScrollViewer.CanContentScroll=“False” 这将改变滚动行为,内容不再被切断。所有这些活动也都有效
我真的不明白为什么会这样,但我认为这与ListBox以及它如何通过不渲染屏幕上的项目来优化性能有关。我认为这会禁用性能增强功能,但会使滚动工作,因为它现在为每个项目呈现了空间。因此,您可以滚动到下一个项目,但不能在超大项目内滚动?您还可以禁用垂直滚动条,然后将整个列表框放入滚动查看器中。(Ed Plunkett)正确。我无法在超大项目内滚动。(克莱门斯23)。这在视觉上有效。但是,除非将鼠标悬停在滚动条上,否则无法使用触摸屏/鼠标滚轮上下滚动。我认为Listbox捕获了滚动事件,而不是将它们传播到ScrollViewer容器。