MVVM C#/WPF 앱이 있습니다. XamDataGrid를 내 뷰 모델 중 하나에 바인딩하여 사용자가 결과 구조를 정의하는 방법을 정의 할 수 있습니다. 즉, 어떤 열이 어떤 변수에 매핑되는지를 정의 할 수 있습니다.
내 핵심은 에 데이터를 복사하는 대신 ObservableCollection
에 랩핑하고 싶습니다. 예를 들어 Dictionary<string, string>
과 같은 사전을 보유하고 있습니다. 문제는,이 방법으로 행을 추가 할 수 없다는 것입니다 (보기가 추가로 잠긴 것처럼 보임). 변경 사항이 저장되지 않습니다. 내 코드 :Infragistics XamDatagrid 바인딩 문제
<igDP:XamDataGrid
Grid.Row="1" Grid.Column="0"
Name="resultStructure"
DataSource="{Binding VariablesDictionary, Mode=TwoWay}"
GroupByAreaLocation="None">
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings
AllowFieldMoving="WithinLogicalRow"
AllowAddNew="True"
AllowDelete="True"
AddNewRecordLocation="OnBottomFixed" />
</igDP:XamDataGrid.FieldLayoutSettings>
</igDP:XamDataGrid>
뷰 모델 (관련 부분) : 추가 된 행
private ObservableCollection<DictionaryEntry> variablesDictionary;
public ObservableCollection<DictionaryEntry> VariablesDictionary
{
get { return variablesDictionary; }
set
{
variablesDictionary = value;
OnPropertyChanged(()=>VariablesDictionary);
}
}
...
List<DictionaryEntry> vars = resultStructureModel.Variables.Select(x => new DictionaryEntry {Key = x.Key, Value = x.Value}).ToList();
VariablesDictionary = new ObservableCollection<DictionaryEntry>(vars);
'XamDataGrid'에 대해서는 모르겠지만 일반적인'DataGrid'에서는'DataSource' 대신'ItemsSource'에 바인드해야합니다. – Rafal
'XamDataGrid'에는'ItemsSource' 속성이 없습니다. – Noich