Wpf DataGrid:実行時にXMLフィールドバインディングを変更する
-
03-07-2019 - |
質問
XMLファイルの一部を表示するための WPFユーザーコントロールを開発しています。ユーザーコントロールを柔軟にしようとしているので、コントロールの外側から列見出しとフィールドデータバインディングを割り当てることができます。
列の見出しを簡単に変更できることがわかりましたが、次のコードには約束があるように見えますが、SertMemberPathはフィールドバインディングを変更しません
public void ChangeColumnDefinitions ( List<XmlGridColumnDefinition> columns )
{
int columnnum = 0;
foreach ( XmlGridColumnDefinition column in columns )
{
this.datagrid.Columns[columnnum].Header = column.Heading;
this.datagrid.Columns[columnnum].SortMemberPath = string.Format ( "Element[{0}].Value", column.FieldName );
++columnnum;
}
}
解決
さらに調べてみると SOで@Generic_Errorがこの質問と回答を見つけました。私は彼のコードを少し修正しましたが、これを思いついたものをさらにカスタマイズできます。
public void ChangeColumnDefinitions ( IEnumerable<XmlGridColumnDefinition> columns )
{
this.datagrid.Columns.Clear ();
foreach ( var column in columns )
{
DataGridTextColumn coldef = new DataGridTextColumn
{
Header = column.Heading,
Binding = new Binding ( string.Format ( "Element[{0}].Value", column.FieldName ) )
};
this.datagrid.Columns.Add ( coldef );
}
}
所属していません StackOverflow