Как определить разделы, которые видны в представлении FlowDocumentScrollViewer?C#

Место общения программистов C#
Ответить
Гость
 Как определить разделы, которые видны в представлении FlowDocumentScrollViewer?

Сообщение Гость »


I have multiple section in

Код: Выделить всё

FlowDocument
as follows. Since there are multiple blocks inside

Код: Выделить всё

FlowDocument
and

Код: Выделить всё

FlowDocument
is inside

Код: Выделить всё

FlowDocumentScrollViewer
the content can be scrolled. Here, I am trying to detect the block that is currently visible in view. For example in following image is visible.
Изображение
MainWindow.xaml

Код: Выделить всё







Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec maximus libero. Proin at suscipit tellus. Maecenas interdum lacinia turpis, nec dictum nisi blandit ac. Mauris quis mauris sodales, aliquet tortor nec, dignissim turpis. Sed nec purus vitae tortor posuere tempus id at justo. Integer maximus, eros sit amet sollicitudin cursus, urna lacus posuere justo, ut tempus est nisi nec elit. Duis luctus, justo sed feugiat dapibus, arcu odio hendrerit est, tempus tempus ante elit ut augue. Quisque aliquet blandit libero sed congue. Quisque imperdiet tempor enim, at pulvinar nulla pellentesque in. Maecenas sit amet massa ultrices, fringilla leo id, scelerisque turpis. Cras non pharetra metus. Cras blandit hendrerit nulla at pellentesque. Nulla tristique eget nibh sed ornare. Praesent augue purus, tincidunt a tempus ut, iaculis vel mi.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent molestie volutpat ante, ac dapibus risus varius vel. In tempor nulla non tristique scelerisque. Nam sollicitudin est tellus, sit amet tempus quam faucibus vel. Proin accumsan sed est ut facilisis. Sed non elit semper, euismod augue non, vulputate lorem. Duis malesuada fringilla mauris, ut tempus enim volutpat in. Duis dignissim ullamcorper est in auctor. Nam at tempor metus, in blandit ligula. Mauris sed urna eleifend, volutpat nulla at, ornare libero. Pellentesque dictum ac nibh at fringilla. Pellentesque eu mi leo. Proin aliquet ante at nisi consequat pharetra.


Etiam accumsan arcu justo, quis dignissim elit volutpat id. Maecenas nec eros id massa pellentesque euismod nec et libero. Aliquam in porttitor lectus. Mauris nec magna sit amet mauris dignissim blandit eget eget velit. Vestibulum dapibus tempor erat, in dapibus eros vestibulum venenatis. Aenean massa mi, efficitur quis fringilla in, elementum vel metus. Sed pulvinar ex lacinia lobortis pharetra. In vel nisi aliquet, porttitor purus vitae, tempus orci. Morbi et ipsum rhoncus, aliquam tortor et, iaculis nibh.


Curabitur hendrerit nisl ut erat viverra pharetra. Fusce rhoncus vitae nisl ac venenatis. Etiam eget magna vitae dolor placerat vestibulum. Maecenas et tristique orci, et molestie risus. In consectetur odio mi, at sollicitudin mauris aliquam in. Aenean a est vehicula lectus semper tempus id sed diam. Suspendisse potenti. Donec accumsan tortor ac lobortis hendrerit. Phasellus vel pellentesque tortor. Curabitur consectetur luctus nibh, non interdum orci placerat in. Pellentesque tempus est tellus, sit amet tempor eros rhoncus vitae. Nunc lobortis turpis sed condimentum mattis. Aliquam erat volutpat.


Proin ut pellentesque felis. Curabitur faucibus sed lectus id ornare. Suspendisse tempor pellentesque quam sit amet gravida. Sed venenatis lorem sit amet metus luctus efficitur.  Ut enim nisl, luctus quis mollis vitae, aliquam in est. Donec et lobortis sapien. Aliquam suscipit augue a nunc tincidunt, vel sodales velit dapibus. Nulla lacinia mi sit amet libero scelerisque, at hendrerit eros vehicula. Nam lectus metus, faucibus non quam eu, dignissim ultrices metus. Cras urna libero, molestie euismod tortor id, ultrices posuere ligula. Nulla porta maximus nulla. Nunc vitae finibus diam, eu consequat tortor.






Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec maximus libero. Proin at suscipit tellus. Maecenas interdum lacinia turpis, nec dictum nisi blandit ac. Mauris quis mauris sodales, aliquet tortor nec, dignissim turpis. Sed nec purus vitae tortor posuere tempus id at justo. Integer maximus, eros sit amet sollicitudin cursus, urna lacus posuere justo, ut tempus est nisi nec elit. Duis luctus, justo sed feugiat dapibus, arcu odio hendrerit est, tempus tempus ante elit ut augue. Quisque aliquet blandit libero sed congue. Quisque imperdiet tempor enim, at pulvinar nulla pellentesque in. Maecenas sit amet massa ultrices, fringilla leo id, scelerisque turpis. Cras non pharetra metus. Cras blandit hendrerit nulla at pellentesque. Nulla tristique eget nibh sed ornare. Praesent augue purus, tincidunt a tempus ut, iaculis vel mi.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent molestie volutpat ante, ac dapibus risus varius vel. In tempor nulla non tristique scelerisque. Nam sollicitudin est tellus, sit amet tempus quam faucibus vel. Proin accumsan sed est ut facilisis. Sed non elit semper, euismod augue non, vulputate lorem. Duis malesuada fringilla mauris, ut tempus enim volutpat in. Duis dignissim ullamcorper est in auctor. Nam at tempor metus, in blandit ligula. Mauris sed urna eleifend, volutpat nulla at, ornare libero. Pellentesque dictum ac nibh at fringilla. Pellentesque eu mi leo. Proin aliquet ante at nisi consequat pharetra.

Etiam accumsan arcu justo, quis dignissim elit volutpat id. Maecenas nec eros id massa pellentesque euismod nec et libero. Aliquam in porttitor lectus. Mauris nec magna sit amet mauris dignissim blandit eget eget velit. Vestibulum dapibus tempor erat, in dapibus eros vestibulum venenatis. Aenean massa mi, efficitur quis fringilla in, elementum vel metus. Sed pulvinar ex lacinia lobortis pharetra. In vel nisi aliquet, porttitor purus vitae, tempus orci. Morbi et ipsum rhoncus, aliquam tortor et, iaculis nibh.

Curabitur hendrerit nisl ut erat viverra pharetra. Fusce rhoncus vitae nisl ac venenatis. Etiam eget magna vitae dolor placerat vestibulum. Maecenas et tristique orci, et molestie risus. In consectetur odio mi, at sollicitudin mauris aliquam in. Aenean a est vehicula lectus semper tempus id sed diam. Suspendisse potenti. Donec accumsan tortor ac lobortis hendrerit. Phasellus vel pellentesque tortor. Curabitur consectetur luctus nibh, non interdum orci placerat in. Pellentesque tempus est tellus, sit amet tempor eros rhoncus vitae. Nunc lobortis turpis sed condimentum mattis. Aliquam erat volutpat.

Proin ut pellentesque felis. Curabitur faucibus sed lectus id ornare. Suspendisse tempor pellentesque quam sit amet gravida. Sed venenatis lorem sit amet metus luctus efficitur. Ut enim nisl, luctus quis mollis vitae, aliquam in est. Donec et lobortis sapien. Aliquam suscipit augue a nunc tincidunt, vel sodales velit dapibus. Nulla lacinia mi sit amet libero scelerisque, at hendrerit eros vehicula. Nam lectus metus, faucibus non quam eu, dignissim ultrices metus. Cras urna libero, molestie euismod tortor id, ultrices posuere ligula. Nulla porta maximus nulla. Nunc vitae finibus diam, eu consequat tortor.






Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec maximus libero. Proin at suscipit tellus. Maecenas interdum lacinia turpis, nec dictum nisi blandit ac. Mauris quis mauris sodales, aliquet tortor nec, dignissim turpis. Sed nec purus vitae tortor posuere tempus id at justo. Integer maximus, eros sit amet sollicitudin cursus, urna lacus posuere justo, ut tempus est nisi nec elit. Duis luctus, justo sed feugiat dapibus, arcu odio hendrerit est, tempus tempus ante elit ut augue. Quisque aliquet blandit libero sed congue. Quisque imperdiet tempor enim, at pulvinar nulla pellentesque in. Maecenas sit amet massa ultrices, fringilla leo id, scelerisque turpis.  Cras non pharetra metus. Cras blandit hendrerit nulla at pellentesque. Nulla tristique eget nibh sed ornare. Praesent augue purus, tincidunt a tempus ut, iaculis vel mi.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent molestie volutpat ante, ac dapibus risus varius vel. In tempor nulla non tristique scelerisque. Nam sollicitudin est tellus, sit amet tempus quam faucibus vel. Proin accumsan sed est ut facilisis. Sed non elit semper, euismod augue non, vulputate lorem. Duis malesuada fringilla mauris, ut tempus enim volutpat in. Duis dignissim ullamcorper est in auctor. Nam at tempor metus, in blandit ligula. Mauris sed urna eleifend, volutpat nulla at, ornare libero. Pellentesque dictum ac nibh at fringilla. Pellentesque eu mi leo. Proin aliquet ante at nisi consequat pharetra.

Etiam accumsan arcu justo, quis dignissim elit volutpat id. Maecenas nec eros id massa pellentesque euismod nec et libero. Aliquam in porttitor lectus. Mauris nec magna sit amet mauris dignissim blandit eget eget velit. Vestibulum dapibus tempor erat, in dapibus eros vestibulum venenatis. Aenean massa mi, efficitur quis fringilla in, elementum vel metus. Sed pulvinar ex lacinia lobortis pharetra. In vel nisi aliquet, porttitor purus vitae, tempus orci. Morbi et ipsum rhoncus, aliquam tortor et, iaculis nibh.

Curabitur hendrerit nisl ut erat viverra pharetra. Fusce rhoncus vitae nisl ac venenatis. Etiam eget magna vitae dolor placerat vestibulum. Maecenas et tristique orci, et molestie risus. In consectetur odio mi, at sollicitudin mauris aliquam in. Aenean a est vehicula lectus semper tempus id sed diam. Suspendisse potenti. Donec accumsan tortor ac lobortis hendrerit. Phasellus vel pellentesque tortor. Curabitur consectetur luctus nibh, non interdum orci placerat in. Pellentesque tempus est tellus, sit amet tempor eros rhoncus vitae. Nunc lobortis turpis sed condimentum mattis. Aliquam erat volutpat.

Proin ut pellentesque felis. Curabitur faucibus sed lectus id ornare. Suspendisse tempor pellentesque quam sit amet gravida. Sed venenatis lorem sit amet metus luctus efficitur. Ut enim nisl, luctus quis mollis vitae, aliquam in est. Donec et lobortis sapien. Aliquam suscipit augue a nunc tincidunt, vel sodales velit dapibus. Nulla lacinia mi sit amet libero scelerisque, at hendrerit eros vehicula. Nam lectus metus, faucibus non quam eu, dignissim ultrices metus. Cras urna libero, molestie euismod tortor id, ultrices posuere ligula. Nulla porta maximus nulla. Nunc vitae finibus diam, eu consequat tortor.







And on the

Код: Выделить всё

ScrollChanged
of

Код: Выделить всё

FlowDocumentScrollViewer
I am trying to get the sections that are currently visible in view. I tried the following but could not found the actual way to achieve this.
MainWindow.xaml.cs

Код: Выделить всё

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1
{
/// 
/// Interaction logic for MainWindow.xaml
/// 
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void FlowDoc_Loaded(object sender, RoutedEventArgs e)
{
ScrollViewer sv = flowDoc.Template.FindName("PART_ContentHost", flowDoc) as ScrollViewer;
sv.ScrollChanged += Sv_ScrollChanged;
}

private void Sv_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
var blocks1 = flowdoc1.Blocks.ToList();

foreach(var block in blocks1)
{

//block.
var cstartPoint = block.ContentStart;
var cendPoint = block.ContentEnd;

var estartPoint = block.ElementStart;
var eendPoint = block.ElementEnd;

bool isFoucsed = block.IsFocused;

//sysWindow.Rect test1 = new sysWindow.Rect(block1);
}
}
}
}
Изображение
Is there any solutions for this?


Источник: https://stackoverflow.com/questions/780 ... iewer-view
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»