Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果单个项目超出控件高度,WPF Listbox将无法显示内容_C#_Wpf_Xaml_Listbox - Fatal编程技术网

C# 如果单个项目超出控件高度,WPF Listbox将无法显示内容

C# 如果单个项目超出控件高度,WPF Listbox将无法显示内容,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,当单个项目大于列表框的大小时,如何使列表框滚动条工作 我有一个带有自定义ItemTemplate的列表框。该模板显示用于记笔记的消息和时间戳。问题是,如果操作员创建了一个很长的便笺,则列表框滚动条不会出现,并且不允许您上下滚动查看整个便笺。对于几个小音符,该控件可以完美地工作。如果在大便笺之后添加小便笺,则会出现滚动条,您可以向下滚动,但无法看到整个第一个便笺,仅看到之前和之后可见的部分,滚动时它会捕捉到下一个便笺 <ListBox Grid.Row="1" ItemsSource="{B

当单个项目大于列表框的大小时,如何使列表框滚动条工作

我有一个带有自定义ItemTemplate的列表框。该模板显示用于记笔记的消息和时间戳。问题是,如果操作员创建了一个很长的便笺,则列表框滚动条不会出现,并且不允许您上下滚动查看整个便笺。对于几个小音符,该控件可以完美地工作。如果在大便笺之后添加小便笺,则会出现滚动条,您可以向下滚动,但无法看到整个第一个便笺,仅看到之前和之后可见的部分,滚动时它会捕捉到下一个便笺

<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容器。