XAMLWriter を使用して、いくつかのコントロールをシリアル化しています。他のコントロールではうまく機能しますが、DataGrid では機能しません。まず、DataGrid 列をシリアル化できません。これは非常に面倒です (誰かが解決策を持っている場合は素晴らしいです!)。そのため、なんとか回避策を見つけました。このコード:
DataGrid dataGrid = new DataGrid();
DataGridTextColumn dgTextColumn = new DataGridTextColumn();
dataGrid.Columns.Add(dgTextColumn);
XamlWriter.Save(dataGrid);
次の出力が生成されます。<DataGrid />
列がまったくありません!だから、列を項目として追加できることがわかりました。
DataGrid dataGrid = new DataGrid();
DataGridTextColumn dgTextColumn = new DataGridTextColumn();
dataGrid.Items.Add(dgTextColumn);//notice the change
XamlWriter.Save(dataGrid);
そして、私はこの出力を得ました。これで十分です。
<DataGrid >
<DataGridTextColumn />
</DataGrid>
手動で追加できるより<DataGrid.Columns>
も</DataGrid.Columns>
なぜ XAMLWriter がこのように動作するのか、誰でも説明できますか? DataGrid 列を正常にシリアル化する方法はありますか?