Я динамически создаю DataGridTemplateColumn в моем приложении. Причина этого в том, что у меня есть TabControl, и когда пользователь хочет добавить новую вкладку, в TabItem создается Datagrid. Вот код, который у меня есть для создания моей колонки:
private DataGridTemplateColumn GetAccountColumn()
{
DataGridTemplateColumn accountColumn = new DataGridTemplateColumn();
accountColumn.Header = "Account";
string xaml = @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
<TextBlock Text=""{Binding Path='Account', Mode=OneWay}"" />
</DataTemplate>";
StringReader stringReader = new StringReader(xaml);
XmlReader xmlReader = XmlReader.Create(stringReader);
accountColumn.CellTemplate = (DataTemplate)XamlReader.Parse(xaml);
xaml = @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
<ComboBox ItemsSource=""{DynamicResource accounts}"" Text=""{Binding Path='Account', Mode=OneWay}"" Height=""23"" IsTextSearchEnabled=""True""/>
</DataTemplate>";
stringReader = new StringReader(xaml);
xmlReader = XmlReader.Create(stringReader);
accountColumn.CellEditingTemplate = (DataTemplate)XamlReader.Parse(xaml);
return accountColumn;
}
Поле со списком отлично заполнено. Как видно из приведенного выше кода, ресурс items связан с наблюдаемой коллекцией строк. Я заполняю ресурс во время выполнения следующим образом:
Resources["accounts"] = this.Account;
Кажется, что все работает хорошо, за исключением того, что я делаю выделение в выпадающем списке, и выпадающий список теряет фокус, выбранный элемент не отображается в текстовом блоке. Как сделать так, чтобы этот элемент отображался в TextBlock? Я попытался установить режим для TwoWay, но я получаю сообщение об ошибке, в котором говорится: «Привязка TwoWay или OneWayToSource не может работать со свойством только для чтения« Account »типа« System.Data.DataRowView ».