2

我希望我的项目ListView能够占据ListView.

目前,我将项目的宽度设置为这样(ListView名为 listView):

Width="{Binding ActualWidth, ElementName=listView, Mode=OneWay}"

这些项目将占据ListView. 但是,不考虑垂直滚动条。如果存在滚动条,则将其绘制在项目右边缘的顶部。

有可能解决这个问题吗?

4

3 回答 3

2

我通过直接引用 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}"
于 2010-07-28T17:13:49.947 回答
1

只是一个想法,但如果你删除了所有的 wWidth 设置呢?

当我使用:

    <ListView DockPanel.Dock="Top">
        <ListViewItem Background="Orange">aaa</ListViewItem>
        <ListViewItem>aaa</ListViewItem>            
    </ListView>

橙色项跨越 ListView 的整个宽度...

于 2010-07-27T21:13:39.713 回答
0

ActualWidth包括滚动条,所以我认为没有办法解决这个问题。使用一个怎么样ViewBox

于 2010-07-27T21:03:27.413 回答