привязка отформатированного текста к richtextbox в silverlight 4 - PullRequest
0 голосов
/ 27 июня 2011

Мне нужно привязать форматированный текст к RichTextBox. Для форматирования кажется, что мне нужно будет создать серию прогонов с их определенными форматами, а затем добавить их в абзац и добавить его в свойство блоков RichTextBox. Я пытался привязать свойство абзаца к блокам, но, похоже, это не позволяет. У Paragraph нет источника предметов, чтобы связать его со списком прогонов. Как я могу связать данные из списка запусков с виджетом RichTextBox?

Спасибо

1 Ответ

0 голосов
/ 28 октября 2011

Вот решение, которое я придумал. Я создал собственный класс RichTextViewer и унаследовал от RichTextBox.

using System.Windows.Documents;
using System.Windows.Markup;
using System.Windows.Media;

namespace System.Windows.Controls
{
    public class RichTextViewer : RichTextBox
    {
        public const string RichTextPropertyName = "RichText";

        public static readonly DependencyProperty RichTextProperty =
            DependencyProperty.Register(RichTextPropertyName,
                                        typeof (string),
                                        typeof (RichTextBox),
                                        new PropertyMetadata(
                                            new PropertyChangedCallback
                                                (RichTextPropertyChanged)));

        public RichTextViewer()
        {
            IsReadOnly = true;
            Background = new SolidColorBrush {Opacity = 0};
            BorderThickness = new Thickness(0);
        }

        public string RichText
        {
            get { return (string) GetValue(RichTextProperty); }
            set { SetValue(RichTextProperty, value); }
        }

        private static void RichTextPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
        {
            ((RichTextBox) dependencyObject).Blocks.Add(
                XamlReader.Load((string) dependencyPropertyChangedEventArgs.NewValue) as Paragraph);

        }
    }
}
...