VS 2010,WPF项目。如何将文本框放入数据网格?
我有一个数据网格与所有单元格中的文本(数据来自自定义对象数组)。但是我无法复制(ctrl + c)任何单元格的内容。所以我想用文本框来显示每个单元格的内容。真正的问题是我不能在XAML中做到这一点,但我必须在代码中动态执行它,因为整个网格是在代码中手动构建的,所以XAML只知道有一个网格。
我以这种方式添加列 - 我发现所有与列相关的是我可以指定标题模板。如何为其构建单元模板并将该小部件设置为文本框?
int i = 0;
foreach (var db_col in query.FieldNames)
{
var col = new DataGridTextColumn();
col.IsReadOnly = false;
col.Header = db_col;
col.Binding = new Binding(String.Format("Visual[{0}]", i));
grid.Columns.Add(col);
++i;
}
在此先感谢您。
已解决
感谢Marko,我终于想出了这样的解决方案。
foreach (var db_col in query.FieldNames)
{
var template = new DataTemplate();
var elemFactory = new FrameworkElementFactory(typeof(TextBox));
elemFactory.SetBinding(TextBox.TextProperty, new Binding(String.Format("Visual[{0}]", i)));
template.VisualTree = elemFactory;
var col = new DataGridTemplateColumn();
col.CellTemplate = template;
col.IsReadOnly = true;
col.Header = db_col;
grid.Columns.Add(col);
++i;
}
太棒了!谢谢。最初我遇到了为单元格设置模板的问题,因为我忘记更改列的类型。 – greenoldman 2010-08-03 11:56:39