VS 2010, WPF 프로젝트.텍스트 상자를 데이터 격자에 넣는 방법?
모든 셀에 텍스트가있는 DataGrid가 있습니다 (데이터는 사용자 정의 객체의 배열입니다). 그러나 어떤 셀의 내용 (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