+ 1 в комментариях об использовании XAML для этого, но это не отвечает на ваш вопрос.
Я подозреваю, что причина того, что текстовые поля доступны только для чтения, заключается в том, что вы привязаны непосредственно к строке. Если WPF позволяет вам редактировать его, где он будет хранить строку? Как вы знаете, строки в .NET являются неизменяемыми.
Попробуйте это:
class StringContainer
{
public string SomeValue { get; set; }
}
Теперь подключите это так:
FrameworkElementFactory txt = new FrameworkElementFactory(typeof(TextBox));
txt.SetBinding(TextBox.TextProperty, new Binding("SomeValue")); // sets binding
// add textbox template
col.CellTemplate = new DataTemplate(typeof(StringContainer));
Когда вы связываете данные, не забудьте обернуть редактируемые строки в StringContainer
объекты.
myDataRow.DefaultValue = new StringContainer("Some string");