C# ListView滚动条弄乱了我的布局
我有一个WPF列表框,通常显示4或5项。对于我的应用程序来说,这意味着我几乎不必显示滚动条(有足够的空间) 但是,如果列表中有更多的项目,我需要显示垂直滚动条,但结果是我的内容空间变小了,在我在列表框后面创建的“背景”上不再好看C# ListView滚动条弄乱了我的布局,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我有一个WPF列表框,通常显示4或5项。对于我的应用程序来说,这意味着我几乎不必显示滚动条(有足够的空间) 但是,如果列表中有更多的项目,我需要显示垂直滚动条,但结果是我的内容空间变小了,在我在列表框后面创建的“背景”上不再好看 我喜欢在我的布局中为滚动条的出现“预留”空间。有办法吗?(可能将滚动条覆盖在内容上)用ScrollViewr包装它怎么样 <ScrollViewer VerticalScrollBarVisibility="Auto"> <!-- your ListB
我喜欢在我的布局中为滚动条的出现“预留”空间。有办法吗?(可能将滚动条覆盖在内容上)用ScrollViewr包装它怎么样
<ScrollViewer VerticalScrollBarVisibility="Auto">
<!-- your ListBoxHere -->
</ScrollViewer>
好的,找到了解决方案 我已经为ScrollViewer创建了一个新的默认样式。然后我改变了滚动条的位置 原始行为
新行为
现在滚动条覆盖在内容上,因此在可见时不会占用额外的空间。当然,内容现在应该为内容保留空间。正如您在问题中所说的,您只需要为垂直滚动条保留宽度,下面的XAML代码会让您有所了解
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/> <!-- reserved for the vertical scrollbar -->
</Grid.ColumnDefinitions>
<Listbox .../>
</Grid>
</ScrollViewer>
这并不能解决我的问题,滚动条仍然占据了空间。其缺点是滚动条会出现在内容的顶部,并且可能会遮住部分内容。
<Grid>
<!-- Presentation below is different from the default: the scrollbar is overlayed on the content. -->
<ScrollContentPresenter CanContentScroll="True" Content="{TemplateBinding ScrollViewer.Content}" />
<ScrollBar Orientation="Vertical" HorizontalAlignment="Right" Minimum="0" Maximum="{TemplateBinding ScrollViewer.ScrollableHeight}" Value="{TemplateBinding ScrollViewer.VerticalOffset}" ViewportSize="{TemplateBinding ScrollViewer.ViewportHeight}" Name="PART_VerticalScrollBar" Visibility="{TemplateBinding ScrollViewer.ComputedVerticalScrollBarVisibility}" />
<ScrollBar Orientation="Horizontal" VerticalAlignment="Bottom" Minimum="0" Maximum="{TemplateBinding ScrollViewer.ScrollableWidth}" Value="{TemplateBinding ScrollViewer.HorizontalOffset}" ViewportSize="{TemplateBinding ScrollViewer.ViewportWidth}" Name="PART_HorizontalScrollBar" Visibility="{TemplateBinding ScrollViewer.ComputedHorizontalScrollBarVisibility}"/>
</Grid>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/> <!-- reserved for the vertical scrollbar -->
</Grid.ColumnDefinitions>
<Listbox .../>
</Grid>
</ScrollViewer>