【发布时间】:2010-07-30 08:38:18
【问题描述】:
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;
}
【问题讨论】: