如何在ListView中添加不同的项目

时间:2012-09-23 10:05:53

标签: c# wpf listview gridview

我有ListView这种类型:

<ListView x:Name="LView">
    <ListView.View>
        <GridView x:Name="GView"></GridView>
    </ListView.View>
</ListView>

最初我不知道我的GridView中会有多少列,而且我不知道单个单元格的类型是什么。

我需要有可能在运行时添加新列,特别是其单元格包含不同对象的新行。

ListView有属性Items,所以如果我有一列字符串而且我想添加一行我写道:

LView.Items.Add("my string");

现在我要添加一个新列:

GView.Columns.Add(new GridViewColumn());

添加了一个新列,但第一行的第二个单元格包含字符串“my string”,为什么?我不希望这种行为只是一个新的空单元格。

特别是如果我想添加一个新行,第一个单元格为String,第二个单元格为CheckBox我需要做什么?

我试过了:

LView.Items.Add("my second string", new CheckBox());

但是,显然,它不起作用。

我尝试添加一个新对象:

public class obj
{
    public string MyString{ get; set; }
    public CheckBox MyCBox { get; set; }
}

LView.Items.Add(new obj());

但它不起作用,因为它显示一个包含(Namespace“+ obj”)的字符串,而我不知道会有多少列,所以我不知道obj类有多少最初

我必须做些什么来解决我的问题?感谢。

1 个答案:

答案 0 :(得分:3)

我认为你将数据项与ui元素混合

LView.Items.Add("my string");

将使用默认模板

显示为textelement

如果您尚未定义任何数据模板并希望显式添加ui元素,请尝试以下方法:

LView.Items.Add(new TextBlock { Text = "My string"});

但是,我认为GridView被填充了数据(以及数据绑定的强大功能),而不是显式的ui元素。列模板应定义数据的呈现方式(在您的情况下为复选框或文本元素)。

参见示例http://www.c-sharpcorner.com/uploadfile/mahesh/gridview-in-wpf/