2015-10-15 11 views
2

Я пытаюсь создать простое приложение для показа билетов, но я застрял в каком-то месте. У меня есть метод load-Data(), который заполняет 2 комбинированных поля (источник назначения &), каждый из которых содержит тот же список городов. Я хочу, чтобы выбранный объект (город) цели был удален из Источника.Как удалить выбранный элемент combobox из другого Combobox

Я отключил исходное поле со списком, которое активируется из поля выбора Selection_Changed назначения.

Я попытался удалить выбранный пункт назначения из источника в событии Selection_Changed. но тогда мне пришло в голову, что, если пользователь сначала выбирает неправильный элемент? он все равно будет удален из источника.

Любые советы, как мне добиться этого?

вот код я пробовал:

private void DestinationCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      // await LoadData(); 
     object selectedItem = DestinationCombo.SelectedItem; 
      if(SourceCombo.Items.Contains(selectedItem)) 
      { 
       SourceCombo.Items.Remove(selectedItem); 
      } 

     //await LoadData(); 
     SourceCombo.IsEnabled = true; 
     } 

'LoadDate' Метод:

private async Task LoadData() 
     { 
      DestinationCombo.Items.Clear(); 
      SourceCombo.Items.Clear(); 
      file = await ApplicationData.Current.LocalFolder.GetFileAsync("jsonText.txt"); 
      var jsonContent = await FileIO.ReadTextAsync(file); 

      DataModel2.RootObject states = JsonConvert.DeserializeObject<DataModel2.RootObject>(jsonContent); 

      foreach (var state in states.country.state) 
      { 
       foreach (var city in state.city) 
       { 

        DestinationCombo.Items.Add(city); 
        SourceCombo.Items.Add(city); 

       } 
      } 
     } 
+2

Я советую вам опубликовать свой код/​​попробуйте сначала –

+0

Я отредактировал мое сообщение с кодом –

+0

Можете ли вы опубликовать метод load-data()? –

ответ

3

Во-первых, где все эти методы, то есть, в классе (скорее всего, форма #), объявить общественности переменную города: -

public list<string> cities = new list<string>; 

Затем отредактируйте ваш метод loaddata() немного:

private async Task LoadData() 
    { 
     DestinationCombo.Items.Clear(); 
     SourceCombo.Items.Clear(); 
     file = await ApplicationData.Current.LocalFolder.GetFileAsync("jsonText.txt"); 
     var jsonContent = await FileIO.ReadTextAsync(file); 

     DataModel2.RootObject states = JsonConvert.DeserializeObject<DataModel2.RootObject>(jsonContent); 

     foreach (var state in states.country.state) 
     { 
      foreach (var city in state.city) 
      { 
       cities.Add(city); 
      } 
     } 

     DestinationCombo.Items.AddRange(cities.ToArray<String>()); 
     SourceCombo.Items.AddRange(cities.ToArray<String>()); 
    } 

Наконец, в SourceComboSelectionChanged Event, поместите этот код:

private void SourceCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     // await LoadData(); 
    object selectedItem = SourceCombo.SelectedItem; 
    DestinationCombo.Items.Clear(); 
    DestinationCombo.Items.AddRange(cities.ToArray<String>()); 
    DestinationCombo.Items.Remove(selectedItem); 
    } 

Вы можете также добавить аналогичный код в другой ComboBox так, что какой бы ComboBox (или назначения) пользователь щелкает, то выбор удаляется из другого ComboBox.

+0

Не использовал бы глобальную или переменную формы для городов. –

+0

Да, я принимал Web. Теперь я вижу приложение для хранилища Windows. –

+0

@FarhanAnam Это ничего не меняло, но делало это хуже, выбрасывало это исключение {«Катастрофический сбой (Исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED))} на« DestinationCombo.Items.Clear(); » –

Смежные вопросы