ListView
이 있는데 ItemSource
을 받으면 SelectedItem
을 다시 평가하고 싶습니다. 사용자가 이미 ListView
에서 항목을 선택한 경우 '기억'하는 것이 목표입니다.ItemSource를 변경 한 후 ListView의 SelectedItem을 다시 평가하십시오.
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
도 내 VM의 속성에 바인딩됩니다.
VM는, :
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();
}
}
내가 잘하면 내가 달성하기 위해 노력하고 무엇을 명확하게 내가 구축하고있는 응용 프로그램의 스크린 샷을했다.
아이디어는 사용자가 TV 프로그램을 탐색 할 때, 응용 프로그램이 관련된 TV 쇼를 기억하고 있다는 것입니다.
현재, 나는 TV 쇼를 연결, 다음 TV 쇼로 이동하고 다시, 아무것도
UPDATE (재산 AcceptedMatchingTvShow
의 게터가 새로운 ItemSource
을 설정 한 후 실행되지 않습니다)를 선택하지 않은 경우 :
추가 ("AcceptedMatchingTvShow") 때 ItemsSource의 B, 난 당신이하여 PropertyChanged를 올리면 같은데요 당신의 ViewModel을 모두 보지 않고 AvailableMatchingTvShows
private ObservableCollection<IWebApiTvShow> _availableMatchingTvShows;
public ObservableCollection<IWebApiTvShow> AvailableMatchingTvShows
{
get { return _availableMatchingTvShows; }
set
{
_availableMatchingTvShows = value;
OnPropertyChanged("AcceptedMatchingTvShow");
}
}
'AvailableMatchingTvShows'와 관련된 코드를 게시 할 수 있습니까? – Sandesh