代码之家  ›  专栏  ›  技术社区  ›  oillio

将列表项设置为增大到包含列表视图-wpf的宽度

  •  2
  • oillio  · 技术社区  · 15 年前

    我想要我的 ListView 以占据整个可用空间的宽度 列表视图 .

    目前,我已经像这样设置了项目的宽度 列表视图 名为ListView):

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

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

    有可能解决这个问题吗?

    3 回复  |  直到 12 年前
        1
  •  2
  •   oillio    15 年前

    我通过直接引用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}"
    
        2
  •  1
  •   Henk Holterman    15 年前

    只是一个想法,但如果你把所有的第二个设置都删除了怎么办?

    当我使用:

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

    橙色项横跨ListView的整个宽度…

        3
  •  0
  •   Dave Clemmer manu    12 年前

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