我有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类有多少最初。
我必须做些什么来解决我的问题?感谢。
答案 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/