Я пытаюсь сделать средство выбора, которое загружает ItemSource из списка и, в зависимости от внешнего события, изменить его SelectedIndex на основе Local.id, но то, что я пробовал до сих пор, не работает.
C# код:
public class Local
{
public string cidade { get; set; }
public int id { get; set; }
}
public int CidadeSelectedIndex{ get; set; }
string jsonCidades;
public async void CarregaCidades()
{
try
{
using (WebClient browser = new WebClient())
{
Uri uriCidades = new Uri("xxxxxxx.php");
jsonCidades = await browser.DownloadStringTaskAsync(uriCidades);
}
var ListaCidades = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Local>>(jsonCidades);
PickerCidades.ItemsSource = ListaCidades;
}
catch (Exception)
{
throw;
}
}
//In some moment of the execution, this code is called:
Local localizacao = JsonConvert.DeserializeObject<Local>(json);
if (localizacao.GetType().GetProperty("id") != null)
{
/*CidadeSelectedItem = localizacao;
I tried that before with SelectedItem="{Binding CidadeSelectedItem, Mode=TwoWay}" */
CidadeSelectedIndex = localizacao.id; // now trying this
}
Прежде, чем я пытался связать, используя ItemDisplayBinding = "{Binding ListaCidades.cidade, Mode = OneWay}", но так как он не работал, я начинаю использовать ItemSources = ListaCidades
Мой код XAML:
<Picker x:Name="PickerCidades"
SelectedIndex="{Binding CidadeSelectedIndex, Mode=TwoWay}"
Grid.Column="1" Grid.Row="0"
SelectedIndexChanged="PickerCidades_SelectedIndexChanged">
</Picker>
Я думаю, что это не работает, потому что я настраиваю элементы с помощью ItemsSource. Я думаю, что мне нужно связать это с помощью xaml. Было бы неплохо помочь.