Wpf 动态填充listview

Wpf 动态填充listview,wpf,listview,mvvm,binding,header,Wpf,Listview,Mvvm,Binding,Header,如果我将数据表绑定到WPF Toolkit数据网格…无需在其中指定列名…它将自动从数据表中获取该列名 但是如果我要将列表视图绑定到一个可观察的集合…我必须在xaml文件中为每一列逐个指定列标题名 所以如果我有一个列名列表->list 随着 要填充的项目列表->列表 我可以将项目列表绑定到列表视图…并将列名列表绑定到列表视图标题…但我不知道列表视图中是否有任何属性…来绑定我的标题 这意味着 我有一个用户控件,其中我有两个列表视图…一个可用,另一个被选中。我需要这个用户控件应该是可重用的…这意味着…

如果我将数据表绑定到WPF Toolkit数据网格…无需在其中指定列名…它将自动从数据表中获取该列名

但是如果我要将列表视图绑定到一个可观察的集合…我必须在xaml文件中为每一列逐个指定列标题名

所以如果我有一个列名列表->
list
随着 要填充的项目列表->
列表

我可以将项目列表绑定到列表视图…并将列名列表绑定到列表视图标题…但我不知道列表视图中是否有任何属性…来绑定我的标题

这意味着


我有一个用户控件,其中我有两个列表视图…一个可用,另一个被选中。我需要这个用户控件应该是可重用的…这意味着…如果我绑定一个列表,比如…列表应该包含两列…第一列的名称为“state”,第二列的名称为“county”。但是如果我绑定一个列表,比如..,那么listview应该包含3列…列名为fruit、color和price。

我认为最好将listview的View属性设置为GridView。然后可以轻松绑定列标题:

  <ListView ItemsSource="{Binding ListOfValues}">
            <ListView.View>
                <GridView >                
                    <GridViewColumn DisplayMemberBinding="{Binding XVal}" Header={binding header}"/>
                </GridView>
            </ListView.View>
        </ListView>


如果使用包含列表和名称的结构:<{listofruits,“Fruits”},{listofStates,“States>

然后:

   <ItemsControl ItemsSource="{Binding ListOfStruct}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ListView ItemsSource="{Binding ListOfitem}">
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding}" Header="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}, Path=DataContext.Header}"/>
                    </GridView>
                </ListView.View>
            </ListView>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>


这不是最好的方法,但我不知道如何做

您的意思是header={binding header}中的“header”是列列表。如果“header”是项列表中的items属性之一(例如XVal),是的。否则,您可以更改标题绑定的源,但不要忘了DataContext是在列表的当前项上设置的。我在源列表中有多个列…不是单列。我需要动态生成gridcolumns。哦,抱歉,不,我不理解您的问题。我想,添加道具会更容易项目中的标题(例如称为标题)。否则,正如我所说,您必须更改header的绑定源您如何更改网格源???我的要求是…我有一个用户控件,其中我有两个列表视图…一个可用,另一个被选中。我需要此用户控件应可重用…这意味着…如果我绑定一个类似…的列表,该列表应包含两个columns…第一列的名称为“state”,第二列的名称为“county”。但是如果我绑定了一个列表,如..那么listview应该包含3列…列名为fruit、color和price。你用这种方法做什么?…你在创建GridView列表吗?listview列表,其中view属性设置为gridViw,其中只包含一列