2014-09-16 8 views
2

У меня есть ListView, который я бы хотел, чтобы он повторно оценил его SelectedItem после получения нового ItemSource. Цель этого - «запомнить», если пользователь уже выбрал элемент в ListView.Переоценить SelectedItem ListView после изменения ItemSource

XAML:

<ListView 
    x:Name="_matchingTvShowsFromOnlineDatabaseListView" 
    Grid.Row="0" 
    Grid.Column="0" 
    Grid.RowSpan="3" 
    ItemsSource="{Binding AvailableMatchingTvShows}" 
    SelectedItem="{Binding AcceptedMatchingTvShow, Mode=TwoWay}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

SelectedItem также привязан к собственности на моей виртуальной машине.

ВМ:

public IWebApiTvShow AcceptedMatchingTvShow 
{ 
    get 
    { 
     IWebApiTvShow acceptedTvShow = null; 
     if (FoundTvShows.Count > 0) 
     { 
      var tvShowName = FoundTvShows[CurrentTvShow]; 
      acceptedTvShow = AvailableTvShowMatches[tvShowName].FirstOrDefault(webApiTvShow => webApiTvShow.Accepted); 
     } 
     return acceptedTvShow; 
    } 
    set 
    { 
     if (value != null) 
     { 
      var tvShowName = FoundTvShows[CurrentTvShow]; 
      var currentlyAcceptedTvShow = 
       AvailableTvShowMatches[tvShowName].FirstOrDefault(webApiTvShow => webApiTvShow.Accepted); 
      if (currentlyAcceptedTvShow != null) 
      { 
       currentlyAcceptedTvShow.Accepted = false; 
      } 
      value.Accepted = true; 
     } 
     OnPropertyChanged(); 
    } 
} 

Я сделал снимок экрана приложения я в здании, которое, надеюсь, ясно, что я пытаюсь достичь.

enter image description here

Идея заключается в том, что, когда пользователь навигации по ТВ-шоу, приложение запомнит соответствующий ТВ-шоу.

В настоящее время, когда я связываю ТВ-шоу, и перейдите к следующему ТВ-шоу и обратно, ничего не выбрано (добытчик свойства AcceptedMatchingTvShow не выполняется после установки нового ItemSource)

UPDATE:

Добавлен код для AvailableMatchingTvShows

private ObservableCollection<IWebApiTvShow> _availableMatchingTvShows; 
public ObservableCollection<IWebApiTvShow> AvailableMatchingTvShows 
{ 
    get { return _availableMatchingTvShows; } 
    set 
    { 
     _availableMatchingTvShows = value; 
     OnPropertyChanged("AcceptedMatchingTvShow"); 
    } 
} 
+0

Возможно ли опубликовать код, связанный с 'Доступными часами? – Sandesh

ответ

1

Не видя все ваши ViewModel, я предполагаю, что если вы поднимаете PropertyChanged («AcceptedMatchingTvShow»), когда ItemsSource б которые будут обновлять привязку SelectedItem.

+0

Правильно! Иногда решение может быть настолько простым. Большое спасибо!! – bas

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