Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Элементы Paragraph, List, ListItem и Bold используются для управления форматированием содержимого в зависимости от их порядка в разметке. Например, элемент Bold охватывает только часть текста в абзаце; в результате только эта часть текста будет выделена жирным шрифтом. Пользователям HTML это поведение будет знакомо.
Классы, наследуемые от DependencyObject являются «объектами зависимостей», позволяющий реализовывать такие вещи, как свойства зависимостей и маршрутизируемые события. Данные вещи, конечно, больше применимы к элементам, но ничто не мешает использовать их в какой-нибудь сторонней логике (например привязка данных, хотя для этого лучше реализовывать INotifyPropertyChanged).
Так к чему все это. Классы, наследуемые от DependencyObject, не являются элементами. По вашей логике DispatcherObject также будет являться элементом.
>>Run обладает отличительным свойством: Вы можете его использовать вместе UIElement.
В данном случае таким свойством обладают все классы, наследуемые от Object…
>>Run обладает отличительным свойством: Вы можете его использовать вместе UIElement.
С таким же успехом можно использовать <sys:String>меня можно прочитать</sys:String>, и текст будет читаем.
Уместнее было бы «потоковая компоновка».
Спасибо,знал и без Вас.
>>Элементом UI в WPF могут быть только классы, наследуемые от DependencyObject
Вы противоречите сами себе, вижу дальше смысла разъяснять мне что-либо нет, но все же я продолжу…
if (typeOf(UIElement) is DependencyObject && typeOf(ContentElement) is DependencyObject)
{
try
{
/*любой UI-элемент, который Вы создадите, будет базироваться на вышеперечисленных
* т.к. будет использоваться PresentationFramework
* который в свою очередь построен вокруг DependencyObject
*/
}
catch (Exception) { }
finally
{
//надеюсь моя логика теперь понятна?
}
}>>в-третьих, заранее прошу прощения, Вы вообще представляете, почему WPF оперирует классами, унаследованными от DispatcherObject?
Еще как, но, казалось бы, при чем здесь это?
Элементом в WPF может быть только наследник UIElement, т.к. только данный класс содержит методы Measure()/MeasureCore() и Arrange()/ArrangeCore() (ну и Desired, RenderSize; ActualHeight и Width, и т.д.). Без них смысла в относительной компоновке нет (да и банально компилятор не даст, т.к. коллекция Panel.Children типа UIElementCollection).
А блочные элементы элементами, в классическом смысле этого слова, не являются.
Элементы Paragraph, List, ListItem и Bold используются для управления форматированием содержимого в зависимости от их порядка в разметке. Например, элемент Bold охватывает только часть текста в абзаце; в результате только эта часть текста будет выделена жирным шрифтом. Пользователям HTML это поведение будет знакомо.
>>Относительную компоновку я имел ввиду внутри FlowDocument, но не обычного окна.
Уместнее было бы «потоковая компоновка».
...DispatcherObject является элементом не более чем DependencyObject, а т.е. вообще не является таковым.
обсуждение же касалось именно FlowDocument и элементов внутри них. здесь невозможно относительное позиционирование относительно (извиняюсь за тавтологию) предшествующих и следующих элементов в общем потоке.
Элементом UI в WPF могут быть только классы, наследуемые от DependencyObject, а т.к. inline-элементы (Run, Span, Bold и т.д.) и block-элементы (Paragraph, Section и т.д.) также наследники DependencyObject, следовательно, они также элементы WPF.
>>Элементом управления UI, элементом UI.
Под элементами обычно (я бы даже сказал всегда, но ваши комментарии заставали меня усомниться в этом) подразумеваются, как вы называете, «элементы управления UI».
Я не понимаю, с какого потолка вы взяли «элементы UI», но с, например, кнопкой ContentElement и его наследники ничего общего не имеют.
Я пытаюсь донести до вас то, что вы, назвав инлайны элементами, допустили грубейшую ошибку.
Я буду цитировать данное предложение, пока наконец до вас не дойдет осознание своей неправоты:
Элементом UI в WPF могут быть только классы, наследуемые от DependencyObject, а т.к. inline-элементы (Run, Span, Bold и т.д.) и block-элементы (Paragraph, Section и т.д.) также наследники DependencyObject, следовательно, они также элементы WPF.
Относительно позиционированные элементы в документах WPF