wpf - 将列表项设置为增长到包含的 ListView 的宽度 - WPF

标签 wpf listview binding width actualwidth

我希望 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>

宽度绑定(bind)如下所示:

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

关于wpf - 将列表项设置为增长到包含的 ListView 的宽度 - WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347891/

相关文章:

c# - MVVM-有没有一种方法可以在不使用数据绑定(bind)的情况下获取和设置文本框的文本?

java - 单击任何 ListView 项目时,将该项目文本显示到 EditText 中

WPF 应用程序在呈现文本时卡住(wpfgfx 问题)

c# - 绑定(bind)在 treeview WPF 中无法正常工作

android - 使用缩略图 android 在 ListView 中显示特定文件夹视频

android - listView 中的自定义 alertDialog

c# - MVVM 的正确方法

wpf - 绑定(bind)延迟属性 WPF - 我没有注意到任何差异

wpf - 嵌套对象更改时更新绑定(bind)

wpf - 选中/取消选中复选框时,带有复选框的列表框不会触发所选项目