【问题标题】:Add SubItems to ListView without using XAML不使用 XAML 将 SubItems 添加到 ListView
【发布时间】:2011-06-08 21:37:26
【问题描述】:

如何向ListView 添加子项?我需要动态生成所有内容,但我发现的每个示例都使用 XAML。

非 WPF 就是这么简单:

ListViewItem lvi = listview.items.add(wahtever);
lvi. blah blah blah

如何在不使用 XAML 的情况下在 WPF 中添加子项?

【问题讨论】:

  • WPF 列表视图没有像旧的 winform 那样的“子项”。它需要一种非常不同的心态。我想你现在的样子,所有的 XAML 到底是什么? Winforms 更加直接。但是现在,我不能回到winforms。 WPF 在我的书中获胜。只是需要一点时间来理解它,但是当你这样做的时候。太棒了。
  • 是的,我记得我最初使用 WPF 的几个月...我的秃头增加了...现在我想到的任何 UI 平台,我都希望它具有绑定、主题、样式、触发器、DataContexts、命令, 附加属性。该死的WinForms太蹩脚了! :p

标签: c# wpf listview listviewitem


【解决方案1】:

如前所述,WPF 没有 WinForms 之类的子项。相反,您可以在适合您目的的对象上使用属性。

为了完整起见,这里是 XAML 与代码的对比。

XAML:

    <UniformGrid Columns="2">
        <ListView Name="xamlListView">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="X Value" DisplayMemberBinding="{Binding X}"/>
                    <GridViewColumn Header="Y Value" DisplayMemberBinding="{Binding Y}"/>
                </GridView>
            </ListView.View>
            <ListView.Items>
                <PointCollection>
                    <Point X="10" Y="20"/>
                    <Point X="20" Y="30"/>
                </PointCollection>
            </ListView.Items>
        </ListView>
        <ListView Name="codeListView"/>
    </UniformGrid>

代码:

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        var view = new GridView();
        view.Columns.Add(new GridViewColumn { Header = "First Name", DisplayMemberBinding = new Binding("First") });
        view.Columns.Add(new GridViewColumn { Header = "Last Name", DisplayMemberBinding = new Binding("Last") });
        codeListView.View = view;
        codeListView.Items.Add(new { First = "Bill", Last = "Smith" });
        codeListView.Items.Add(new { First = "Jane", Last = "Doe" });
    }

【讨论】:

  • 非常感谢。那成功了。所以现在看来​​,即使通过代码,您也可以使用绑定?有趣且令人沮丧的变化,但我非常感谢您的帮助,非常感谢!
【解决方案2】:

“WPF 方式”是将您的列表视图绑定到代表您要显示的数据的集合。然后将包含 data 的对象添加到该集合中。您几乎不必像计划那样手动将ListViewItems 添加到您的列表中。我可以想出一个例子,但是这里已经有很多线程可以解决这个问题:

  1. Add programmatically ListViewItem to Listview in WPF
  2. WPF ListView - how to add items programmatically?

【讨论】:

  • 我需要一个帮助,如何通过动态添加行来改变背景颜色?
【解决方案3】:

子项还是列表项?? 简单:

myListbox.Items.Add(object);

您可以将任何类型的对象添加到该集合或特定的 ListBoxItem 对象中,例如:

this.List.Items.Add(new ListBoxItem{ Content = "Value to display"});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多