GridViewListBoxItem 与 ListViewItem 的列绑定



我一直在搞砸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" });
}
}

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

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

有关物料容器的详细信息,请参阅此博客文章。

最新更新