Esempio n. 1
0
        private static void OnRunStreamChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            if (!(d is RichTextBox target))
            {
                return;
            }

            void OnMessage(object sender, Run run)
            {
                var para = GetOrCreateParagraph(target);

                para.Inlines.Add(XamlHelper.XamlClone(run));
                target.ScrollToEnd();
            }

            if (e.OldValue != null)
            {
                var coll = (RunStream)e.OldValue;
                coll.OnMessage -= OnMessage;
            }

            if (e.NewValue != null)
            {
                var coll = (RunStream)e.NewValue;
                coll.OnMessage += OnMessage;
            }
        }
Esempio n. 2
0
        private static void OnBindedDocumentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            if (!(d is RichTextBox target))
            {
                return;
            }

            FlowDocument doc = e.NewValue as FlowDocument;

            if (doc == null)
            {
                target.Document = new FlowDocument();
                return;
            }

            target.Document = XamlHelper.XamlClone(doc);
        }
Esempio n. 3
0
        private static void OnBindableInlinesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            if (!(d is TextBlock Target))
            {
                return;
            }

            FlowDocument doc  = e.NewValue as FlowDocument;
            var          para = doc?.Blocks?.FirstBlock as Paragraph;

            if (para == null)
            {
                return;
            }

            Target.Inlines.Clear();
            foreach (var item in para.Inlines)
            {
                Target.Inlines.Add(XamlHelper.XamlClone(item));
            }
        }