탐색 매개 변수로 개체 목록 보내기

마크 바튼

사람들이 특정 영화에 대한 정보를 볼 수있는 앱이 있습니다. 내 MainPage (GenreListPage)에는 데이터베이스의 모든 영화를 장르 목록으로 정렬하는 목록이 있습니다. 동일한 장르의 장르 유형과 영화 수는 CollectionView ItemTemplate (GenreModel)에 표시됩니다. 사용자가 장르를 탭하면 다른 CollectionView (FilmListPage)가있는 다른 페이지로 이동합니다. 이 CollectionView는 영화 제목과 등급 (FilmModel)을 포함하는 ItemTemplate으로 채워집니다.

현재 사용자가 FilmListPage로 이동하면 생성자가 데이터베이스를 쿼리하는 메서드를 호출하여 GenreListPage에서 선택한 지정된 장르의 모든 영화를 검색합니다.

GenreModel에 FilmModel 유형의 목록을 포함하도록 이것을 변경하고 싶습니다. FilmListPage로 이동할 때 FilmModel 목록을 매개 변수로 전달하고 FilmListPage에서 검색하려고합니다. 그러나 내 이해에서 탐색 매개 변수를 전달하는 것은 문자열을 전달하는 것을 의미합니다. 이것이 사실입니까?

일부 코드;

GenreModel.cs

public class GenreModel{

    public string GenreType {get; set;}

    public List<FilmModel> AssociatedFilms {get; set;}
}

FilmModel.cs

public class FilmModel {

    public string Title {get; set;}

    public double Rating {get; set;}
}

GenreListPageViewModel.cs

public class GenreListPageViewModel.cs  : ViewModelBase
{
    private GenreModel _selectedGenre;
    private List<GenreModel> _genres;

    public GenreModel SelectedGenre 
    {
        get => _selectedGenre;
        set => SetProperty(ref _selectedGenre, value);
    }

    public List<GenreModel> Genres
    {
        get => _genres;
        set => SetProperty(ref _genres, value);
    }

    public GenreListPageViewModel(INavigationService navigationService, IDatabaseService databaseService) : base (navigationService)
    {
        Genres = new ObservableCollection<GenreModel>(databaseService.GetFilms());
    }

    public async void ItemSelected()
    {
        var p = new NavigationParameters;
        p.Add("Films", SelectedGenre.AssociatedFilms);
        p.Add("Genre", SelectedGenre.GenreType);
        await NavigationService.NavigateAsync("FilmListPage", p);
    }
}

FilmListPageViewModel.cs

public class FilmListPageViewModel.cs : ViewModelBase, INavigationAware
{
    IDatabaseService _databaseService;

    private string _genre;
    private List<FilmModel> _films = new List<FilmModel>();

    public string Genre
    {
        get => _genre;
        set => SetProperty(ref _genre, value);
    }

    public List<FilmModel> Films
    {
        get => _films;
        set => SetProperty(ref _films, value);
    }

    public GenreListPageViewModel(INavigationService navigationService, IDatabaseService databaseService) : base (navigationService)
    {
        _databaseService = databaseService;
    }

    public void OnNavigatedFrom(INavigationParameters parameters)
    {

    }

    public void OnNavigatedTo(INavigationParameters parameters)
    {
        Genre = parameters.GetValue<string>("Genre")};

        //old code that used to get film by selected genre
        //Films = databaseService.GetFilmsByGenre(Genre);

        Films = new ObservableCollection<FilmModel>(parameters.GetValues<FilmModel>("Films"));
    }
}

댄 시겔

탐색 및 대화 상자 매개 변수는 모두 실제로 IEnumerable<KeyValuePair<string, object>>. 이것은 당신에게 무엇을 의미합니까?

우선, 주어진 키는 하나에서 많은 실제 값을 포함 할 수 있음을 의미합니다.

navigationParameters.Add("message", "Prism is great for Wpf apps");
navigationParameters.Add("message", "Prism is great for Xamarin.Forms apps");
navigationParameters.Add("message", "Prism is great for Uno and WinUI apps");

둘째, 매개 변수로 원하는 모든 것을 문자 그대로 전달할 수 있음을 의미합니다.

var messages = new[] {
    "Prism is great for Wpf apps",
    "Prism is great for Xamarin.Forms apps",
    "Prism is great for Uno and WinUI apps"
};
navigationParameters.Add("message", messages);

익숙한 것처럼 매개 변수를 다음과 같이 다시 가져올 수 있습니다.

var messages = navigationParameters.Get<IEnumerable<string>>("message");

메시지를 추가 한 첫 번째 방법을 사용하여이 방법을 사용하면 첫 번째 값에 도달하고 동일한 유형이 아님을 확인하기 때문에 예외가 발생할 가능성이 있습니다. 두 번째 방법으로 추가하면 IEnumerable<string>.

그러나 당신이 찾고있는 것에 훌륭하게 작동하고 당신의 가치가 어떻게 추가되었는지에 관계없이 작동 할 두 번째 방법이 있습니다.

var messages = navigationParameters.GetValues<string>("message");

GetValues메서드는 지정된 제네릭 형식의 IEnumerable을 반환합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내 Tableau 매개 변수 목록 내보내기

분류에서Dev

JSON 목록 / 객체 Python에서 매개 변수 목록 검색

분류에서Dev

Dart-목록 인 GET 매개 변수 보내기

분류에서Dev

MVVMCross 탐색 매개 변수

분류에서Dev

Dll 함수에 매개 변수로 개체 보내기

분류에서Dev

스택 탐색기에서 탭 탐색기로 매개 변수 전달 (반응 탐색 5)

분류에서Dev

django보기 목록에서 세부 사항 검색 매개 변수

분류에서Dev

WPF 창 내부보기 변경 및 개체 목록 만들기

분류에서Dev

Resolve에서 Castle 개체를 매개 변수로 보내기

분류에서Dev

SQL Server-매개 변수 목록을 함수로, 여러 결과를 Excel로 내보내기

분류에서Dev

키워드 목록을 기반으로 개체 목록 검색

분류에서Dev

PHP : 옵션 목록을 인수로 보내기 (명명 된 매개 변수 / 인수 모음의 대안)

분류에서Dev

라이브러리의 메소드 및 매개 변수 목록을 텍스트 파일로 내보내기

분류에서Dev

매개 변수로 기능하도록 목록 전달

분류에서Dev

개체 목록에서 개체 매개 변수의 최대 값

분류에서Dev

개체 목록-개체의 매개 변수에 액세스

분류에서Dev

MVVM Light : RelayCommand 탐색 매개 변수 추출 정보

분류에서Dev

지킬 / 액체 목록 매개 변수?

분류에서Dev

목록에서 중복 개체 찾기 및 매개 변수 추가

분류에서Dev

탭 탐색기 React Navigation 5에 매개 변수 전달

분류에서Dev

반응 탐색에서 mapStateToProps 경로 매개 변수 가져 오기

분류에서Dev

매개 변수 R로 평균 목록 얻기

분류에서Dev

배열 목록에서 두 개의 매개 변수를 기반으로 객체 삭제

분류에서Dev

SAS 매개 변수 목록

분류에서Dev

LINQ를 사용하여 개체 목록에서 고유 한 매개 변수 목록 가져 오기

분류에서Dev

매개 변수를 기준으로 상위 목록에 목록 추가

분류에서Dev

매개 변수 값을 기반으로 하위 목록의 c # 분할 목록

분류에서Dev

목록을 매개 변수로 전달

분류에서Dev

매개 변수 배열로 객체 목록 인스턴스화

Related 관련 기사

  1. 1

    내 Tableau 매개 변수 목록 내보내기

  2. 2

    JSON 목록 / 객체 Python에서 매개 변수 목록 검색

  3. 3

    Dart-목록 인 GET 매개 변수 보내기

  4. 4

    MVVMCross 탐색 매개 변수

  5. 5

    Dll 함수에 매개 변수로 개체 보내기

  6. 6

    스택 탐색기에서 탭 탐색기로 매개 변수 전달 (반응 탐색 5)

  7. 7

    django보기 목록에서 세부 사항 검색 매개 변수

  8. 8

    WPF 창 내부보기 변경 및 개체 목록 만들기

  9. 9

    Resolve에서 Castle 개체를 매개 변수로 보내기

  10. 10

    SQL Server-매개 변수 목록을 함수로, 여러 결과를 Excel로 내보내기

  11. 11

    키워드 목록을 기반으로 개체 목록 검색

  12. 12

    PHP : 옵션 목록을 인수로 보내기 (명명 된 매개 변수 / 인수 모음의 대안)

  13. 13

    라이브러리의 메소드 및 매개 변수 목록을 텍스트 파일로 내보내기

  14. 14

    매개 변수로 기능하도록 목록 전달

  15. 15

    개체 목록에서 개체 매개 변수의 최대 값

  16. 16

    개체 목록-개체의 매개 변수에 액세스

  17. 17

    MVVM Light : RelayCommand 탐색 매개 변수 추출 정보

  18. 18

    지킬 / 액체 목록 매개 변수?

  19. 19

    목록에서 중복 개체 찾기 및 매개 변수 추가

  20. 20

    탭 탐색기 React Navigation 5에 매개 변수 전달

  21. 21

    반응 탐색에서 mapStateToProps 경로 매개 변수 가져 오기

  22. 22

    매개 변수 R로 평균 목록 얻기

  23. 23

    배열 목록에서 두 개의 매개 변수를 기반으로 객체 삭제

  24. 24

    SAS 매개 변수 목록

  25. 25

    LINQ를 사용하여 개체 목록에서 고유 한 매개 변수 목록 가져 오기

  26. 26

    매개 변수를 기준으로 상위 목록에 목록 추가

  27. 27

    매개 변수 값을 기반으로 하위 목록의 c # 분할 목록

  28. 28

    목록을 매개 변수로 전달

  29. 29

    매개 변수 배열로 객체 목록 인스턴스화

뜨겁다태그

보관