Hello,
I've got a nested data model which I want to be displayed in one Grid or TreeGrid. How is this best done?
public class Country : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name;
private ObservableCollection<League> _leagues = new ObservableCollection<League>();
public string CountryName
{
get => _name;
set
{
_name = value;
OnPropertyChanged("CountryName");
}
}
public ObservableCollection<League> Leagues
{
get => _leagues;
set
{
_leagues = value;
OnPropertyChanged("Leagues");
}
}
private void OnPropertyChanged(String name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
public class League : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name;
private ObservableCollection<Match> _matches = new ObservableCollection<Match>();
public string LeagueName
{
get => _name;
set
{
_name = value;
OnPropertyChanged("LeagueName");
}
}
public ObservableCollection<Match> Matches
{
get => _matches;
set
{
_matches = value;
OnPropertyChanged("Matches");
}
}
private void OnPropertyChanged(String name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
public class Market : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name;
private double _odds;
public string MarketName
{
get => _name;
set
{
_name = value;
OnPropertyChanged("MarketName");
}
}
public double Odds
{
get => _odds;
set
{
_odds = value;
OnPropertyChanged("Odds");
}
}
private void OnPropertyChanged(String name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
public class Match : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name;
private ObservableCollection<Market> _markets = new ObservableCollection<Market>();
public string MatchName
{
get => _name;
set
{
_name = value;
OnPropertyChanged("MatchName");
}
}
public ObservableCollection<Market> Markets
{
get => _markets;
set
{
_markets = value;
OnPropertyChanged("Markets");
}
}
private void OnPropertyChanged(String name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}