如何在WPF C#中填充listview

时间:2011-07-12 13:04:32

标签: c# wpf xaml listview

我正在尝试填充窗口加载事件的列表视图,但没有出现。

这是我的XAML

<ListView Height="142" Name="listView1" Width="371">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="60" Header="ID"/>
                    <GridViewColumn Width="300" Header="User Name" />
                </GridView>
            </ListView.View>
        </ListView>
    </GroupBox>

这是我的c#代码:

  private void Window_Loaded(object sender, RoutedEventArgs e)
    {

        ArrayList _ID = new ArrayList();
        ArrayList _UserList = new ArrayList();

        using (DataClasses1DataContext dc = new DataClasses1DataContext())
        {
            var Users = (from u in dc.users select u.username).ToList();

            for (int i = 0; i < Users.Count(); i++)
            {
                _UserList.Add(Users[i]).ToString();
            }


            using (DataClasses1DataContext dcc = new DataClasses1DataContext())
            {
                var ID = (from u in dcc.users select u.id).ToList();

                for (int i = 0; i < ID.Count(); i++)
                {
                    _ID.Add(ID[i]).ToString();
                }

            }
        }

请帮忙

3 个答案:

答案 0 :(得分:3)

GridViewColumns通过DisplayMemberBindingCellTemlate开展工作。你既不指定。

此外,我没有看到您在代码中引用ListView,至少您需要通过ListView.Items.Add或设置ListView.ItemsSource添加项目。

答案 1 :(得分:2)

首先制作对象,我看到你有2个不同的列表。只需使用一个对象,保留两个数据。 接下来,像H.B.说,你需要指定每列显示的内容。简单的方法是使用DisplayMemberPath,更复杂但也更灵活的解决方案是使用专门的CellTemplate

如果您的数据对象看起来像这样

public class MyObject
{
   public int Id{get;set;}
   public string Name {get;set;}
}

你的ListView在xaml中保存这些项目的列表看起来像。

<ListView.View>
    <GridView>
        <GridViewColumn Width="60" Header="ID" DisplayMemberBinding="{Binding Id}"/>
        <GridViewColumn Width="300" Header="User Name" DisplayMemberBinding="{Binding Name}" />
    </GridView>
</ListView.View>

希望有所帮助。

答案 2 :(得分:1)

Well ListView1没有绑定到任何数据源。

也永远不会将生成的数组分配给列表视图....

查看ItemSource属性