используя Freshmvvm, вы можете использовать метод WhenAny
и прослушивать изменения в свойстве SelectedCountry
. Когда это произойдет, вы отфильтруете коллекцию штатов по странам, используя SelectedCountry, и обновите свою коллекцию States
с результатом.
Это должно выглядеть следующим образом:
[PropertyChanged.AddINotifyPropertyChangedInterface]
public class MyViewModel : FreshBasePageModel
{
public ObservableCollection<Country> Countries { get; set; }
public ObservableCollection<State> States { get; set; }
// This would be the collection where you have all the States
private List<State> _allStatesCollection = new List<State>();
public Country SelectedCountry { get; set; }
public MyViewModel()
{
// Listening for changes on the `SelectedCountry`
this.WhenAny(OnCountryChanged, o => o.SelectedCountry);
}
//Method called when a new value is set in the `SelectedCountry` property
private void OnCountryChanged(string property)
{
//Filter the collection of states and set the results
var states = _allStatesCollection.Where(a => a.CountryCode == SelectedCountry.Code).ToList();
States = new ObservableCollection<State>(states);
}
}
Примечание : В приведенном выше коде предполагается, что вы используете пакет Fody INotifyPropertyChanged Nuget. Если вы не используете его, вы можете либо установить его, либо реализовать свойства PropertyChanged вручную. Это не изменит оставшуюся часть кода.
Надеюсь, это поможет .-