У меня проблема. У меня есть приложение wpf mvvm, и мне нужно связать xml, но я не знаю как.
У меня есть элементы модели, элементы VM и вид. Все работает, но все эти элементы имеют "некоторую базовую" модель.
class ItemModel
{
public ItemModel(string name, double weight, double sg, double volume)
{
Name = name;
Weight = weight;
Sg = sg;
Volume = volume;
}
public string Name { get; set; }
public double Weight { get; set; }
public double Sg { get; set; }
public double Volume { get; set; }
}
Это моя ВМ.
class ItemViewModel : BaseVM
{
public ItemViewModel(string name, double sg, double weight, double volume)
{
Name = name;
Weight = weight;
Sg = sg;
Volume = volume;
}
public string Name { get; set; }
private double _weight;
public double Weight
{
get => _weight;
set
{
_weight = value;
RaisePropertyChanged();
}
}
private double _sg;
public double Sg
{
get => _sg;
set
{
_sg = value;
Weight = value * _volume;
RaisePropertyChanged("Weight");
RaisePropertyChanged("Sg");
}
}
private double _volume;
public double Volume
{
get => _volume;
set
{
_volume = value;
_weight = value * _sg;
RaisePropertyChanged();
RaisePropertyChanged("Weight");
RaisePropertyChanged("Sg");
}
}
}
Это мой MainVM
class MainViewModel
{
private DataModel Data;
public ObservableCollection<ItemViewModel> Items { get; set; }
public ListCollectionView FilteredItems { get; set; }
public MainViewModel()
{
Data = new DataModel();
Items = new ObservableCollection<ItemViewModel>();
FilteredItems = new ListCollectionView(Items)
{
Filter = item => ((ItemViewModel)item).Volume != 0,
IsLiveFiltering = true,
LiveFilteringProperties =
{
nameof (ItemViewModel.Volume)
}
};
Load();
}
public void Load()
{
foreach (var item in Data.GetItems())
Items.Add(new ItemViewModel(item.Name, item.Weight, item.Sg, item.Volume));
}
}
У меня есть "DataModel"
class DataModel
{
public List<ItemModel> GetItems() =>
new List<ItemModel>
{
new ItemModel("Water", 0.00, 1.025, 0.00),
new ItemModel("Ballast", 0.00, 1.000, 0.00),
new ItemModel("Oil", 0.00, 1.040, 0.00),
};
}
И это XML, который я хочу связать.
<ballast>
<tank ID="FPTW" Name="Forepeak" Weight="0.00" SG="1.025" Volume="0.00"> </tank>
</ballast>
Пожалуйста, помогите мне, как я могу связать этот XML-файл вместо списка в DataModel.