1

我有一个ListView这种类型:

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

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

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

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

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

现在我想添加一个新列:

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

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

特别是如果我想添加一个新行,第一个单元格作为我必须做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 类最初必须如何

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

4

1 回答 1

3

我认为您将数据项与 ui 元素混合在一起

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

将使用默认模板作为文本元素呈现

如果您还没有定义任何数据模板并想显式添加 ui 元素,请尝试以下操作:

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

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

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

于 2012-09-23T11:04:59.573 回答