我希望我的项目ListView
能够占据ListView
.
目前,我将项目的宽度设置为这样(ListView
名为 listView):
Width="{Binding ActualWidth, ElementName=listView, Mode=OneWay}"
这些项目将占据ListView
. 但是,不考虑垂直滚动条。如果存在滚动条,则将其绘制在项目右边缘的顶部。
有可能解决这个问题吗?
我希望我的项目ListView
能够占据ListView
.
目前,我将项目的宽度设置为这样(ListView
名为 listView):
Width="{Binding ActualWidth, ElementName=listView, Mode=OneWay}"
这些项目将占据ListView
. 但是,不考虑垂直滚动条。如果存在滚动条,则将其绘制在项目右边缘的顶部。
有可能解决这个问题吗?
我通过直接引用 ItemsPresenter 解决了这个问题。为此,我需要为 Viewbox 定义一个模板并命名 ItemsPresenter。
模板如下所示:
<ListView.Template>
<ControlTemplate TargetType="{x:Type ListView}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="1" SnapsToDevicePixels="true">
<ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
<ItemsPresenter x:Name="MLVItemsPresenter" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</ScrollViewer>
</Border>
<--SNIP-->
</ControlTemplate>
</ListView.Template>
宽度绑定看起来像这样:
Width="{Binding ActualWidth, ElementName=MLVItemsPresenter, Mode=OneWay}"
只是一个想法,但如果你删除了所有的 wWidth 设置呢?
当我使用:
<ListView DockPanel.Dock="Top">
<ListViewItem Background="Orange">aaa</ListViewItem>
<ListViewItem>aaa</ListViewItem>
</ListView>
橙色项跨越 ListView 的整个宽度...
ActualWidth
包括滚动条,所以我认为没有办法解决这个问题。使用一个怎么样ViewBox
?