public MainWindow() { InitializeComponent(); TestFlowPage.LineStackingStrategy = LineStackingStrategy.BlockLineHeight; TestFlowPage.LineHeight = LineHeight; TestFlowPage.FlowDirection = FlowDirection.RightToLeft; TestFlowPage.LineHeight = LineHeight; TestFlowPage.FontFamily = ArialFontFamily; TestFlowPage.FontWeight = FontWeights.Normal; TestFlowPage.FontSize = TestFlowPage.FontSize; TestFlowPage.TextAlignment = TextAlignment.Left; TestFlowPage.Language = Lang; TestFlowPage.PagePadding = new Thickness(10); TestFlowPage.ColumnGap = 0; TestFlowPage.ColumnWidth = double.PositiveInfinity; ContentText = GetContent(); SizeChanged += delegate { var width = FlowDocumentFrame.ActualWidth.Equals(double.NaN) ? 555.555 : FlowDocumentFrame.ActualWidth; var lines = TestFlowPage.CalcLinesByEndOfLine(ContentText, width); ListBoxLines.Items.Clear(); foreach (var line in lines) { ListBoxLines.Items.Add(line); } }; }
private void Test_MouseMove(object sender, MouseEventArgs e) { try { var pointer = Mouse.GetPosition(this); var screenPoint = PointToScreen(pointer); TextPointer caretPointer = TestFlowPage.ScreenPointToTextPointer(screenPoint); var offset = new TextRange(TestFlowPage.ContentStart, caretPointer).Text.Length; var startToCaret = new TextRange(TestFlowPage.ContentStart, caretPointer); startToCaret.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red); var caretToEnd = new TextRange(caretPointer, TestFlowPage.ContentEnd); caretToEnd.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Black); LabelMsg.DataContext = $"{pointer}\t offset:{offset}\t {ContentText[offset - 1]}"; } catch (Exception exception) { LabelMsg.DataContext = exception.Message; } }