многократное использование присоединенного свойства не работает - PullRequest
0 голосов
/ 21 декабря 2010

Полагаю, я неправильно понимаю вложенные свойства. Я пытаюсь преобразовать FlowDocument в RichTextBox в свойство строки HTML в моей модели представления. У меня есть два RichTextBox, которые используют мой класс RichTextBoxAssistant (спасибо этому сообщению в блоге ):

<RichTextBox x:Name="rtb_description" 
    local:RichTextBoxAssistant.BoundDocument="{Binding MyVM.Description,
        ValidatesOnDataErrors=True}"/>

<RichTextBox x:Name="rtb_descriptionHowTo"
    local:RichTextBoxAssistant.BoundDocument="{Binding MyVM.DescriptionHowTo,
        ValidatesOnDataErrors=True}" />

В моем классе RichTextBoxAssistant у меня есть это свойство зависимости:

public static readonly DependencyProperty BoundDocument =
    DependencyProperty.RegisterAttached(
        "BoundDocument",
        typeof(string),
        typeof(RichTextBoxAssistant),
        new FrameworkPropertyMetadata(
            null,
            FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
            boundDocumentChanged
        )
    );

Проблема в том, что метод boundDocumentChanged срабатывает, когда я изменяю значение в моем первом RichTextBox, rtb_description, но не когда я изменяю значение в rtb_descriptionHowTo. Когда я изменяю текст или делаю что-либо на rtb_descriptionHowTo, я никогда не достигаю boundDocumentChanged. Это результат того, что RichTextBoxAssistant является статическим классом? Как я могу это исправить, чтобы я мог использовать RichTextBoxAssistant с несколькими RichTextBoxes?

1 Ответ

0 голосов
/ 21 декабря 2010

ColinE была правильной идеей: я попытался удалить присоединенное свойство из моего первого RichTextBox, и изменение значения второго RichTextBox все равно не поместило меня в boundDocumentChanged. Оказывается, мое DescriptionHowTo свойство в моей модели представления было нулевым, а не строкой HTML. Когда я инициализировал его на @"<html><body></body></html>", все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...