【问题标题】:Add row in multiple-column listview?在多列列表视图中添加行?
【发布时间】:2012-01-10 08:30:09
【问题描述】:

我在添加显示对象成员的所有值的行时遇到问题。

这是我设置列表视图的方式:

    <ListView Height="178" HorizontalAlignment="Left" Margin="238,31,0,0" Name="SpoolSheetListView" VerticalAlignment="Top" Width="555" HorizontalContentAlignment="Stretch" SelectionMode="Single">
        <ListView.View>
            <GridView>
                <GridViewColumn Width="85"  Header="Column 1" />
                <GridViewColumn Width="120" Header="Column 2" />
                <GridViewColumn Width="120" Header="Column 3" />
                <GridViewColumn Width="120" Header="Column 4" />
                <GridViewColumn Width="115" Header="Column 5" />
            </GridView>
        </ListView.View>
    </ListView>

比如说,myObject 有 5 个成员:member1 到 member5,它们都是字符串类型。如何在 ListView 中为该对象添加一行?

再次感谢大家!

【问题讨论】:

    标签: wpf vb.net listview multiple-columns


    【解决方案1】:

    将 WPF 列表控件与数据绑定一起使用时效果最佳;您应该将ListViewItemsSource 绑定到对象列表,并将每一列绑定到这些对象的属性。

    <ListView ItemsSource="{Binding Items}" Height="178" HorizontalAlignment="Left" Margin="238,31,0,0" Name="SpoolSheetListView" VerticalAlignment="Top" Width="555" HorizontalContentAlignment="Stretch" SelectionMode="Single">
        <ListView.View>
            <GridView>
                <GridViewColumn Width="85"  Header="Column 1" DisplayMemberBinding="{Binding Member1}" />
                <GridViewColumn Width="120" Header="Column 2" DisplayMemberBinding="{Binding Member2}" />
                <GridViewColumn Width="120" Header="Column 3" DisplayMemberBinding="{Binding Member3}" />
                <GridViewColumn Width="120" Header="Column 4" DisplayMemberBinding="{Binding Member4}" />
                <GridViewColumn Width="115" Header="Column 5" DisplayMemberBinding="{Binding Member5}" />
            </GridView>
        </ListView.View>
    </ListView>
    

    ItemsDataContext 的一个属性,它返回一个对象集合)

    要向ListView 添加一行,只需向Items 集合添加一个项目(注意该集合应实现INotifyCollectionChanged 以便通知ListViewObservableCollection&lt;T&gt; 类大多数情况下都可以正常工作)

    【讨论】:

    • 嗨,托马斯!谢谢你的帮助!如果您有时间,您介意在代码中向我展示如何在这种情况下实现 INotifyCollectionChanged 和 ObservableCollection 吗?我是一个新手,非常感谢我能得到的所有帮助。
    • @will0809,你不必实现 INotifyCollectionChanged,ObservableCollection 已经做到了。只需使用 ObservableCollection 而不是 List
    猜你喜欢
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多