У меня 2 просмотра. У одного есть событие, которое передает две переменные на вторую страницу и загружает страницу вверх:
private void CollectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = (GalleryListEntry)e.CurrentSelection.FirstOrDefault();
Navigation.PushModalAsync(new Gallery(item.PhotographerCode, item.GalleryCode));
}
на второй странице У меня есть это:
public Gallery(string photographerCode, string galleryCode)
{
InitializeComponent();
}
Вторая страница, имеет представление Collection, имеющее собственный источник Bindings. Для этого источника привязки у меня есть Модель, Сервис и ViewModel. Служба вызывается моделью представления и возвращает список изображений, которые должны отображаться в представлении коллекции второй страницы.
Внутри этого класса обслуживания мне потребуется доступ к двум переданным выше переменным (photograperCode
и galleryCode
), но я не могу понять, как передать переменные в ViewModel, чтобы затем переслать его в класс.
ViewModel:
using GalShare.Model;
using GalShare.Service;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
namespace GalShare.ViewModel
{
class GalleryViewModel
{
public ObservableCollection<Gallery> Galleries { get; set; }
public GalleryViewModel()
{
Galleries = new GalleryService().GetImageList();
}
}
}
Я пытался вот так
((GalleryViewModel)this.BindingContext).pCode = photographerCode;
((GalleryViewModel)this.BindingContext).gCode = galleryCode;
но я получаю эту ошибку: System.NullReferenceException: 'Object reference not set to an instance of an object.'
BindingContext имеет значение Null, но в файле Xaml у меня есть это:
<ContentPage.BindingContext>
<vm:GalleryViewModel/>
</ContentPage.BindingContext>