アプリケーションでDataGridTemplateColumnを動的に作成しています。これは、TabControlがあり、ユーザーが新しいタブを追加したいときに、TabItemにデータグリッドが作成されるためです。これまでに列を作成するためのコードは次のとおりです。
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;
}
コンボボックスにはアイテムが完全に入力されています。上記のコードからわかるように、itemsourceは監視可能な文字列のコレクションにバインドされています。実行時に次の方法でリソースにデータを入力します。
Resources["accounts"] = this.Account;
コンボボックスで選択を行ってコンボボックスがフォーカスを失った後を除いて、すべてがうまく機能しているようです。選択した項目はTextBlockに表示されません。このアイテムをTextBlockに表示するにはどうすればよいですか?モードをTwoWayに設定しようとしましたが、「TwoWayまたはOneWayToSourceバインディングは、タイプ「System.Data.DataRowView」の読み取り専用プロパティ「Account」では機能しません」というエラーが表示されます。