Родные представления Frame не позволяют идти назад

Среда

  • react-native -v: 0.55.0
  • npm ls rnpm-plugin-windows: 0.2.8
  • npm ls react-native-windows: 0.55.0-rc.0
  • node -v: 8.11.3
  • npm -v: 5.6.0
  • yarn --version: 1.7.0

  • Целевая платформа: UWP

  • Версия (ы) целевой платформы:10.0.14393.0
  • Целевое устройство (устройства): Настольный компьютер
  • Разработка операционной системы: Windows 10 Desktop
  • Visual Studio Версия: 2017
  • Конфигурация сборки: отладка (но все равно для этой проблемы)

Действия по воспроизведению

  1. Установите свежее реагирующее приложение
  2. Установите ответные нативные окна (как в Приступая к работе)
  3. затем откройте решение в VS и создайте новый собственный модуль в ReactNative/Views/Radaee/RadaeeManager.cs
  4. Импортируйте внешнюю библиотеку RadaeePdf (это библиотека для редактирования pdf в собственном приложении, вы можете найти ее на их веб-сайте)
  5. Ссылка Radaee на ваше приложение

RadaeeManager.cs

    class RadaeeManager : SimpleViewManager<MainPage>
    {
        public MainPage _mainPage;
        public override string Name
        {
            get
            {
                return "RCTRadaeeView";
            }
        }

        public RadaeeManager()
        {
            _mainPage = new MainPage();
        }

        protected override MainPage CreateViewInstance(ThemedReactContext reactContext)
        {
            return _mainPage;
        }
    }

MainPage.xaml.cs

    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        async private void BrowsFile(Object sender, RoutedEventArgs e)
        {
            FileOpenPicker filePicker;
            filePicker = new FileOpenPicker();
            filePicker.ViewMode = PickerViewMode.List;
            filePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
            filePicker.FileTypeFilter.Add(".PDF");
            filePicker.FileTypeFilter.Add(".pdf");
            StorageFile file = await filePicker.PickSingleFileAsync();
            if (file != null)
            {
                IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite);
                if (stream != null)
                {
                    Frame rootFrame = Window.Current.Content as Frame;
                    rootFrame.Navigate(typeof(PDFReaderPage), stream);
                }
            }
        }
    }

PDFReaderPage.xaml.cs

    public sealed partial class PDFReaderPage : Page, PDFView.PDFViewListener
    {
        IRandomAccessStream m_stream;

        public PDFReaderPage()
        {
            this.InitializeComponent();
            Windows.UI.Core.CoreWindow rcWindow = Window.Current.CoreWindow;
            Rect rcScreen = rcWindow.Bounds;
            mPDFView.Width = rcScreen.Width;
            mPDFView.Height = rcScreen.Height;
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            m_stream = (IRandomAccessStream)e.Parameter;
            m_doc = new PDFDoc();
            PDF_ERROR err = m_doc.Open(m_stream, "");
            switch (err)
            {
                case PDF_ERROR.err_ok:
                    m_view = new PDFViewVert(mPDFView);
                    m_view.vOpen(m_doc, 4, 0xFFCCCCCC, this);
                    initOptionPanels();
                    break;
                case PDF_ERROR.err_password:
                    break;
                default:
                    break;
            }
        }
     }

С этим кодом я не могу вернуться к своему приложению реакции. Но если я не использую Frame.Navigate, я могу вернуться, но взаимодействие с pdf нарушено. см. ниже RadaeeManager.cs

    class RadaeeManager : SimpleViewManager<PDFReaderPage>
    {
        public PDFReaderPage _mainPage;
        public override string Name
        {
            get
            {
                return "RCTRadaeeView";
            }
        }

        public RadaeeManager()
        {
            _mainPage = new PDFReaderPage();
        }

        protected override PDFReaderPage CreateViewInstance(ThemedReactContext reactContext)
        {
            return _mainPage;
        }
    }

PDFReaderPage.xaml.cs

    public sealed partial class PDFReaderPage : Page, PDFView.PDFViewListener
    {
        IRandomAccessStream m_stream;

        public PDFReaderPage()
        {
            this.InitializeComponent();
            Windows.UI.Core.CoreWindow rcWindow = Window.Current.CoreWindow;
            Rect rcScreen = rcWindow.Bounds;
            mPDFView.Width = rcScreen.Width;
            mPDFView.Height = rcScreen.Height;
            openFile();
        }

        protected override void openFile(NavigationEventArgs e)
        {
            ApplicationData data = ApplicationData.Current;
            StorageFile file = await data.LocalCacheFolder.GetFileAsync("pdf.pdf");
            m_stream = await file.OpenAsync(FileAccessMode.ReadWrite); m_doc = new PDFDoc();
            m_stream = (IRandomAccessStream)e.Parameter;
            m_doc = new PDFDoc();
            PDF_ERROR err = m_doc.Open(m_stream, "");
            switch (err)
            {
                case PDF_ERROR.err_ok:
                    m_view = new PDFViewVert(mPDFView);
                    m_view.vOpen(m_doc, 4, 0xFFCCCCCC, this);
                    initOptionPanels();
                    break;
                case PDF_ERROR.err_password:
                    break;
                default:
                    break;
            }
        }
     }

Это способ, которым я могу заставить Radaee работать отлично, но я не могу вернуться к своему приложению.

Ожидаемое поведение

Мне нужно открыть собственный вид для редактирования PDF, а затем мне нужно вернуться в свое приложение

Фактическое поведение

Если я открою свою страницу radaee с помощью Frame.Navigate, я не смогу вернуться к своему приложению реакции. Но если я открою свою страницу radaee простым возвратом, я не смогу правильно использовать плагин.

Спасибо за вашу помощь!

0 ответов

Другие вопросы по тегам