Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Свяжите текст RichTextBox из Xaml

Автор вопроса: user281947Ответов: 6

Как привязать текст RichTextArea к xaml

richtextboxsilverlight

Ответы

Ответ 1 · рейтинг 3 · Arsen Mkrtchyan

Для этого нет встроенного способа. Вы можете создать свойство с прикрепленным текстом и привязать к нему, как обсуждалось здесь

Ответ 2 · рейтинг 26 · m1m1k

Здесь есть более простой ответ:

Silverlight 4 RichTextBox связывает данные с помощью DataContext, и это работает как шарм.

<RichTextBox>
  <Paragraph>
    <Run Text="{Binding Path=LineFormatted}" />
  </Paragraph>
</RichTextBox>

Ответ 3 · рейтинг 4 · e-rock

Вот решение, которое я придумал. Я создал собственный класс 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);

        }
    }
}

Ответ 4 · рейтинг 4 · Kevin Tan

Вы можете использовать InlineUIContainer class, если вы хотите привязать элемент управления XAML внутри встроенного типизированного элемента управления

<RichTextBlock>
<Paragraph>
    <InlineUIContainer>
        <TextBlock Text="{Binding Name"} />
    </InlineUIContainer>
</Paragraph>
</RichTextBlock>

Ответ 5 · Ana Betts

Этого сделать нельзя, придется вручную обновить. Документ не является DependencyProperty.

Ответ 6 · Todd Main

Должно быть возможно в SL4 RC. См. Что лучше всего заменить FlowDocument в Silverlight?

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы