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}"/>