WPF DocumentViewer Find-function и документы FixedPage

Почему в Redux обычно / хорошей практикой является использование действия REQUEST, которое изменяет состояние? (например, очищает его, устанавливает загрузку: true, отметка времени и т. д.) и т. д. Если да, то почему выполняется действие REQUEST? Почему бы не пропустить действие REQUEST и просто обновить SUCCESS / FAILURE, чтобы предотвратить повторный рендеринг?

Один из примеров: представьте, что у вас есть компонент, который требует данные, которые необходимо получить из API , На веб-интерфейсе вы хотели бы иметь индикатор загрузки бар. Вы сможете отобразить эту полосу загрузки, только если знаете, что запросили вызов.

Представьте, что мы делаем это без индикатора ЗАПРОС / ЗАГРУЗКА: если пользователь уже был на этой странице с компонентом, который вызывает запрос и возвращается снова, состояние (FAILURE / SUCCESS) уже было бы установлено. Это означает, что если предыдущее состояние было «FAILURE», и вы рендерили свой компонент в зависимости от этого состояния, то сначала будет отображаться ваш «FAILURE» рендеринг. И затем, это может быть обновлено с вашим рендером УСПЕХА. Для пользователя это приведет к переключению с сообщения об ошибке / страницы на страницу результатов или наоборот, что действительно является плохим UX.

7
задан David Schmitt 8 November 2008 в 11:35
поделиться

2 ответа

У меня была такая же проблема с FixedDocuments. Если вы конвертируете свой FixedDocument в XPS-документ, он работает нормально.

Пример создания XPS-документа в памяти из FixedDocument, а затем его отображения в DocumentViewer.

// Add to xaml: <DocumentViewer x:Name="documentViewer" />
// Add project references to "ReachFramework" and "System.Printing"
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.IO;
using System.IO.Packaging;
using System.Windows.Xps.Packaging;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            // Set up demo FixedDocument containing text to be searched
            var fixedDocument = new FixedDocument();
            var pageContent = new PageContent();
            var fixedPage = new FixedPage();
            fixedPage.Children.Add(new TextBlock() { Text = "Demo document text." });
            pageContent.Child = fixedPage;
            fixedDocument.Pages.Add(pageContent);

            // Set up fresh XpsDocument
            var stream = new MemoryStream();
            var uri = new Uri("pack://document.xps");
            var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite);
            PackageStore.AddPackage(uri, package);
            var xpsDoc = new XpsDocument(package, CompressionOption.NotCompressed, uri.AbsoluteUri);

            // Write FixedDocument to the XpsDocument
            var docWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
            docWriter.Write(fixedDocument);

            // Display XpsDocument in DocumentViewer
            documentViewer.Document = xpsDoc.GetFixedDocumentSequence();
        }
    }
}

enter image description here

9
ответ дан 7 December 2019 в 01:28
поделиться

Я испытал затруднения искать текст в richtextbox, это было слишком медленно. То, что я сделал, было уплотнить xaml каждый раз, когда я хотел искать. Я улучшил несколько порядков величины.

Это - большое обходное решение, базирующееся в части книги Chris Anderson.

Удачи

1
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: