Я новичок в xamarin.forms.

На главной странице есть кнопка «Выбрать фото». Когда пользователь щелкает, открывается всплывающее окно с количеством изображений. Когда пользователь нажимает и всплывающее окно с изображением закрывается.

Я хочу сделать это, когда всплывающее окно закроется; Я хочу отобразить выбранное изображение на главной странице, чтобы пользователь знал, какое изображение они выбрали.

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

Это код, когда пользователь нажимает изображение

        public void Idpty1(object sender, EventArgs args)
        {
            Signtype = "1";

            //save the image name as variable
            SelectedTypeImage = "idpty1.png";

            //On the Newphoto page; call close popup function. 
            new NewPhotoPage().ClosePopover();
}

Это функция на главной странице, и я пытаюсь вызвать эту функцию с помощью указанной выше функции.

 public void ClosePopover()
     {

       //Close the popover 
       PopupNavigation.Instance.PopAsync();

       //Get the variable which was set on the popover page (image name)
       SelectedTypeImage = MyPopupPage.SelectedTypeImage;

        // Source the image from variable. 
        SelectedType.Source = SelectedTypeImage ;


        //DisplayAlert("Alert2", SelectedTypeImage, "ok");

         System.Diagnostics.Debug.WriteLine("test");
    }

Это код изображения на главной странице

<Image x:Name="SelectedType" Resources=""></Image>

В приведенном выше коде; часть изображения не работает, источник изображения не работает, также не работает отображение предупреждения. НО СИСТЕМА ДЕБАГ РАБОТАЕТ.

Я не понимаю, что функция получает вызов, но даже отображение предупреждения не работает.

0
Tom Wilson 8 Окт 2018 в 18:19

2 ответа

Лучший ответ

Я использую что-то вроде

public void Idpty1(object sender, EventArgs args)
        {
            Signtype = "1";

            //save the image name as variable
            SelectedTypeImage = "idpty1.png";

            //On the Newphoto page; call close popup function. 
           // new NewPhotoPage().ClosePopover();
Xamarin.Forms.MessagingCenter.Send<App> ((App)Xamarin.Forms.Application.Current, "CallMethod");
}

В конструкторе Main Page.

MessagingCenter.Subscribe(this, "CallMethod", (sender) => {
// do something
ClosePopover();  // <-- run u' method.
});
1
Jose Barron Tovar 8 Окт 2018 в 16:03

На странице Newphoto просто вызовите метод ClosePopover как:

YOURCLASSNAME.ClosePopover();

Предполагая, что они находятся в одном пространстве имен. В противном случае используйте using, чтобы добавить пространство имен вашего класса. Дайте мне знать, если вам нужны дополнительные разъяснения.

0
Oluwasayo Babalola 8 Окт 2018 в 17:16