ListBoxItem 与 ListViewItem 的 GridViewColumn 绑定

Posted

技术标签:

【中文标题】ListBoxItem 与 ListViewItem 的 GridViewColumn 绑定【英文标题】:GridViewColumn Binding of ListBoxItem vs ListViewItem 【发布时间】: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" );
    

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于ListBoxItem 与 ListViewItem 的 GridViewColumn 绑定的主要内容,如果未能解决你的问题,请参考以下文章

一个加载时带动画效果的ListBoxItem

Firemonkey ListBoxItem自绘

获取ListBox中的ListBoxItem

WPF:改变ListBoxItem和ListViewItem的颜色

WPF中如何给listboxitem添加单机时间

获取 ListBoxItem 的索引 - WPF