[英]Cascading Picker inXamarin Forms MVVM
我有一個問題,如何制作級聯選擇器來鏈接所選城市中的所有州?
此代碼檢索所有城市和州,但我無法弄清楚的一件事是如何獲取所選城市值並將其與 state 同步。
這是視圖模型
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}" />
只需更新SelectedState
設置器中的Cities
屬性:
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)
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.