【问题标题】:GridViewColumn Binding of ListBoxItem vs ListViewItemListBoxItem 与 ListViewItem 的 GridViewColumn 绑定
【发布时间】:2018-12-14 05:34:20
【问题描述】:

我一直在搞乱GridViews,遇到了绑定到GridViewColumns 的奇怪行为。

使用此 XAML:

<ListView Name="lv">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="First" DisplayMemberBinding="{Binding firstName}"/>
            <GridViewColumn Header="Last" DisplayMemberBinding="{Binding lastName}"/>
        </GridView>
    </ListView.View>
</ListView>

为什么下面会显示数据:

public class Foo : ListBoxItem {               // ListBoxItem
    public string firstName { get; set; }
    public string lastName { get; set; }
}
public partial class MainWindow : Window {
    public MainWindow() {
        InitializeComponent();
        lv.Items.Add(new Foo { firstName = "John", lastName = "Doe" });
        lv.Items.Add(new Foo { firstName = "Jane", lastName = "Smith" });
    }
}

而以下显示数据:

public class Foo : ListViewItem {              // ListViewItem
    public string firstName { get; set; }
    public string lastName { get; set; }
}
public partial class MainWindow : Window {
    public MainWindow() {
        InitializeComponent();
        lv.Items.Add(new Foo { firstName = "John", lastName = "Doe" });
        lv.Items.Add(new Foo { firstName = "Jane", lastName = "Smith" });
    }
}

【问题讨论】:

    标签: c# wpf xaml listview listbox


    【解决方案1】:

    为什么下面显示数据...而下面不显示数据

    因为ListView 控件不会为ListViewItem 生成任何ListViewItem 容器。对于您添加到ItemsItemsSource 集合的所有其他类型的对象,将生成一个隐式ListViewItem 容器。

    有关物品容器的更多信息,请参阅this blog post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 2015-03-14
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多