Страницы

Поиск по вопросам

воскресенье, 16 февраля 2020 г.

Где найти исходники RichTextBox и FlowDocument?

#c_sharp #wpf


Ищу исходники RichTextBox и FlowDocument. 

У меня TextEditor унаследованный от RichTextBox

Свойства перекрываются этой строкой:

DefaultStyleKeyProperty.OverrideMetadata(typeof(TextEditor),
                                             new FrameworkPropertyMetadata(typeof(TextEditor)));


.

public class TextEditor : RichTextBox

static TextEditor()
    {

DefaultStyleKeyProperty.OverrideMetadata(typeof(TextEditor),
                                             new FrameworkPropertyMetadata(typeof(TextEditor)));


Если её закоммнтировать то контроллер работает как RichTextBox.

Но не рааботают свойства TextEditor. 

Без закомметирования - контроллер работает как TextEditor. Но в него нельзя вставлять
картинки.

Частично пример моего кода здесь: Как вставить картинку в RichTextBox?

public class TextEditor : RichTextBox

public sealed class TextDocument : FlowDocument

    


Ответы

Ответ 1



Набираем sourceof.net и ищем: RichTextBox FlowDocument Исходники тем со стилями можно найти локально в файлах Visual Studio. Например, у 2015-ой Студии они хранятся здесь: %ProgramFiles(x86)%\Microsoft Visual Studio 14.0\DesignTools\SystemThemes\Wpf А строчкой DefaultStyleKeyProperty.OverrideMetadata(typeof(TextEditor), new FrameworkPropertyMetadata(typeof(TextEditor))); вы перекрываете не свойства, а стиль контрола по-умолчанию: теперь он будет равен стилю, у которого TargetType выставлен в TextEditor. Стили кастомных контролов обычно задаются в файле Generic.xaml и выглядят следующим образом: Важно понимать, что таким стилем переопределяется не только Template (по сути — разметка контрола), а и вообще все свойства базового стиля, т.к. BasedOn по-умолчанию равен null. Если в новом стиле нужно унаследовать некий существующий стиль (в вашем случае это стиль RichTextBox), и тем самым сохранить поведение и разметку RichTextBox, то укажите BasedOn явно, и не затирайте свойство Template: ... ...

Комментариев нет:

Отправить комментарий