动态填充listview

时间:2010-10-27 23:04:45

标签: wpf listview mvvm binding header

如果我将数据表绑定到WPF Toolkit-data-grid .....则无需在那里指定列名...它将自动从数据表中获取。

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

如果我有一个列名列表 - &gt; List<ColumnHeaderNames> 随着 要填充的项目列表 - &gt; List<Object to populate list>

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

这意味着......

我有一个用户控件,其中我有2个列表视图...一个可用,另一个被选中。我需要这个用户控件shud可以重用......这意味着......如果我绑定一个像...这样的列表shud包含两列...第一列的名称为“state”,第二列的名称为“county” ”。但是,如果我绑定一个类似的列表..然后listview shud包含3列......列名称为水果,颜色和价格。

2 个答案:

答案 0 :(得分:1)

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

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

如需了解更多信息,请访问http://msdn.microsoft.com/en-us/library/system.windows.controls.gridview.aspx

答案 1 :(得分:0)

如果您使用包含列表和名称的结构:&lt; {listOfFruits,“Fruits”},{listofStates,“States&gt;

然后:

   <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>

这不是最好的方式,但我不知道该怎么做