Пользовательский контроль с richTextBox, привязываемый richTextBox - PullRequest
0 голосов
/ 08 января 2011

Я пытаюсь создать пользовательский контроль с помощью richTextBox, потому что мне нужен привязываемый richTextbox.

Я нашел здесь какое-то решение: Связывание Richtextbox wpf .

Я хотел бы использовать решение Арктур ​​.Создайте пользовательский элемент управления с помощью элемента управления richTextBox и используйте свойство зависимости.

В XAML у меня есть только элемент управления richTextBox:

<UserControl x:Class="WpfApplication2.BindableRichTextBoxControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <RichTextBox Name="RichTextBox" Grid.Row="0"/>    
    </Grid>
</UserControl>

В CodeBehind:

public partial class BindableRichTextBoxControl : UserControl
{
    public static readonly DependencyProperty DocumentProperty =
    DependencyProperty.Register("Document", typeof(FlowDocument), typeof(BindableRichTextBoxControl), 
    new PropertyMetadata(OnDocumentChanged));

    public FlowDocument Document
    {
        get { return (FlowDocument)GetValue(DocumentProperty); }
        set { SetValue(DocumentProperty, value); }
    }

    private static void OnDocumentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var control = (BindableRichTextBoxControl)d;
        if (e.NewValue == null)
            control.RichTextBox.Document=new FlowDocument();

        //?
        control.RichTextBox.Document = document;
    }


    public BindableRichTextBoxControl()
    {
        InitializeComponent();
    }
}

Я немного запуталсяс последней строкой в ​​методе OnDocumentChanged.

        control.RichTextBox.Document = document;

Я не могу определить, что такое varibale document .

1 Ответ

0 голосов
/ 09 января 2011

Я думаю, он имеет в виду это:

private static void OnDocumentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    RichTextBoxControl control = (RichTextBoxControl) d;
    if (e.NewValue == null)
        control.RTB.Document = new FlowDocument(); //Document is not amused by null :)
    else
        control.RTB.Document = e.NewValue;
}

но я рекомендую оставить комментарий к его первоначальному ответу.

...