问题描述
此代码检索所有城市和州,但我无法弄清楚的一件事是如何获取选定的城市值并将其与州同步。
这是视图模型
public class Myviewmodel : Baseviewmodel
{
public async void GetCities()
{
using (var client = new HttpClient())
{
var uri = Constants.BaseApiAddress + "api/GetCities";
var result = await client.GetStringAsync(uri);
var CitiesList= JsonConvert.DeserializeObject<List<CityModel>>(result);
Cities = new ObservableCollection<CityModel>(CitiesList);
}
}
public async void GetStates()
{
using (var client = new HttpClient())
{
var uri = Constants.BaseApiAddress + "api/GetStates";
var result = await client.GetStringAsync(uri);
var StatesList= JsonConvert.DeserializeObject<List<StateModel>>(result);
States = new ObservableCollection<StateModel>(StatesList);
}
}
StateModel _selectedState;
public StateModel SelectedState
{
get
{
return _selectedState;
}
set
{
if (SelectedState!= value)
{
_selectedState = value;
OnPropertyChanged();
}
}
}
CityModel _selectedCity;
public CityModel SelectedCity
{
get
{
return _selectedCity;
}
set
{
if (SelectedCity != value)
{
_selectedCity = value;
OnPropertyChanged();
}
}
}
}
这是 XAML
<Picker x:Name="CityPicker" Title="Select City"
ItemsSource="{Binding Cities}"
ItemdisplayBinding="{Binding City}"
SelectedItem="{Binding SelectedCity}" />
<Picker x:Name="StatePicker" Title="Select State"
ItemsSource="{Binding States}"
ItemdisplayBinding="{Binding State}"
SelectedItem="{Binding SelectedState}" />
解决方法
只需更新 Cities
setter 中的 SelectedState
属性:
public StateModel SelectedState
{
get
{
return _selectedState;
}
set
{
if (SelectedState!= value)
{
_selectedState = value;
OnPropertyChanged();
if (value != null)
//Cities = RetrieveCitiesByState((CityModel) value); //update Cities according to the new selected State (value)
}
}
}