Я хотел бы привязать DataGrid к файлу XML, который можно обновлять / изменять с помощью двусторонней привязки.
В настоящее время источник не изменяется при обновлении.
Я попытался построить его, используя следующий код:
XAML
<DataGrid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding CFCCDataView.DataView, UpdateSourceTrigger=PropertyChanged}"/>
ViewModel
public XMLCFCCTranslationList CFCCDataView { get; set; }
public VM()
{
CFCCDataView = new XMLCFCCTranslationList();
}
Модель
class XMLCFCCTranslationList : INotifyPropertyChanged
{
private void RaisePropertyChanged(string prop)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
public event PropertyChangedEventHandler PropertyChanged;
private DataView _dataView;
public DataView DataView
{
get => _dataView;
set
{
if (_dataView == value) return;
_dataView = value;
RaisePropertyChanged("DataView");
}
}
public XMLCFCCTranslationList()
{
var dataSet = new DataSet();
dataSet.ReadXml(@"c:\file.xml");
var cfccDataView = new DataView(dataSet.Tables[0]);
DataView = cfccDataView;
}
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<Translation xmlns="">
<CFCCTranslation CFCC="A10" FUNC_CLASS="1" SPEED_CAT="5" />
<CFCCTranslation CFCC="A20" FUNC_CLASS="2" SPEED_CAT="5" />
<CFCCTranslation CFCC="A30" FUNC_CLASS="3" SPEED_CAT="5" />
<CFCCTranslation CFCC="A40" FUNC_CLASS="4" SPEED_CAT="5" />
<CFCCTranslation CFCC="A50" FUNC_CLASS="5" SPEED_CAT="5" />
<CFCCTranslation CFCC="A71" FUNC_CLASS="6" SPEED_CAT="5" />
<CFCCTranslation CFCC="B10" FUNC_CLASS="7" SPEED_CAT="5" />
</Translation>