編集: Infragistics フォーラムは既に見ました。以下のコードは、そのサンプルに基づいています。データバインディングは機能していないようです。
ビューに Infragistics XamDataGrid があります。
<DockPanel>
<grid:XamDataGrid x:Name="gridData" DataContext="{Binding Path=DataEditorDataTable}" DataSource="{Binding Path=DataEditorDataTable.DefaultView}"
IsSynchronizedWithCurrentItem="True" Visibility="{Binding DataGridVisible}">
<grid:XamDataGrid.FieldLayoutSettings>
<grid:FieldLayoutSettings AutoGenerateFields="True" AllowAddNew="False" AllowDelete="False" />
</grid:XamDataGrid.FieldLayoutSettings>
</grid:XamDataGrid>
</DockPanel>
コンストラクターでユーザー コントロールのデータ コンテキストを設定します。
public DataEditor(SomeDataType DataType, IEventAggregator eventaggregator)
{
InitializeComponent();
this.DataContext = new DataEditorViewModel(DataType, eventaggregator);
}
dataeditor ビュー モデルでは、データが変更されたことを知らせるイベントをサブスクライブし、データ テーブルを作成して SetData メソッドを呼び出します。(グリッドに表示されるデータ列の数を事前に知ることはできません。また、これらの列はユーザーの操作によって変化し続けるため、データ テーブルを使用してバインドしたいと考えています。)
このようなメソッドでプロパティを割り当てます。
/// <summary>
/// Returns the data that the data editor displays.
/// </summary>
public DataTable DataEditorDataTable
{
get
{
return dtDataEditor;
}
set
{
dtDataEditor = value;
OnPropertyChanged("DataEditorDataTable");
}
}
/// <summary>
/// Method to set data on load
/// </summary>
private void SetData(DataTable dtDataEditor)
{
if (!isDataEditorCellEdited)
if (dtDataEditor != null && dtDataEditor.Rows.Count > 0)
{
try
{
//Assign the data to the grid
DataEditorDataTable = dtDataEditor;
DataGridVisible = Visibility.Visible;
}
catch
{
//If any exception occurs, hide the grid
DataGridVisible = Visibility.Collapsed;
}
}
else
//If no data, hide the grid
DataGridVisible = Visibility.Collapsed;
}
問題は、バインディングが単に行われていないことです。バインディングに関して特に見逃したことはありますか?