ListBoxItem与ListViewItem的GridViewColumn绑定

时间:2018-07-05 16:41:55

标签: c# wpf xaml listview listbox

我一直在搞弄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 个答案:

答案 0 :(得分:0)

  

以下内容为何显示数据...而以下内容不显示数据

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

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