#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: ... ...
Комментариев нет:
Отправить комментарий