FlowDocumentReader прокрутка вверх

Как прокрутить до верхней части FlowDocumentReader?

Контент устанавливается по привязке

<FlowDocumentReader Grid.Row="4" Grid.Column="0" Name="FlowDocumentPageViewer1" HorizontalAlignment="Stretch">
    <FlowDocumentReader.Document>
        <Binding ElementName="_this" Path="DocFlow" IsAsync="False" Mode="OneWay"/>
    </FlowDocumentReader.Document>                   
</FlowDocumentReader>

Если я прокручиваю вниз, то связываю новый контент, он не прокручивается вверх.
С новым контентом хочу прокрутить наверх.

Исходя из комментариев Клемнеса, этот список прокручивается к началу

FlowDocumentPageViewer1.Document.BringIntoView();

Теперь моя проблема в том, как автоматизировать этот вызов.
Я не могу поместить его в get, поскольку не могу поместить эту команду после возврата.
Пробовал эти два события, но не запускается с обязательным обновлением

Loaded="FlowDocumentPageViewer1_loaded"  
SourceUpdated="FlowDocumentPageViewer1_loaded"

1 ответ

Вы можете создать вложенное свойство, которое устанавливает оригинал Document собственность, а также звонки BringIntoView():

public class FlowDocumentReaderEx
{
    public static readonly DependencyProperty DocumentProperty =
        DependencyProperty.RegisterAttached(
            "Document", typeof(FlowDocument), typeof(FlowDocumentReaderEx),
            new FrameworkPropertyMetadata(DocumentPropertyChanged));

    public static FlowDocument GetDocument(DependencyObject obj)
    {
        return (FlowDocument)obj.GetValue(DocumentProperty);
    }

    public static void SetDocument(DependencyObject obj, FlowDocument value)
    {
        obj.SetValue(DocumentProperty, value);
    }

    private static void DocumentPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
    {
        var flowDocumentReader = obj as FlowDocumentReader;

        if (flowDocumentReader != null)
        {
            flowDocumentReader.Document = e.NewValue as FlowDocument;

            if (flowDocumentReader.Document != null)
            {
                flowDocumentReader.Document.BringIntoView();
            }
        }
    }
}

Теперь вы можете связать это свойство как:

<FlowDocumentReader ...
    local:FlowDocumentReaderEx.Document="{Binding DocFlow, ElementName=_this}"/>
Другие вопросы по тегам