WPF - Визуальное дерево не используется для рисования?
Вопрос
У меня проблемы с проблемами понимания, когда будет вызывается метод Onrender. Рассмотрим мой пример: У меня есть класс, вытекающий от MraceSelement, который переопределяет метод Onrender. Предположим, у меня есть генеракодицетагкод.Что я ожидал, это то, что
var someElement = new SomeElement();
grid.AddVisualChild(someElement);
someElement.InvalidateVisual();
.
приведет к срабатыванию метода onomelement.onrender.Это не в моем случае, но делает следующее:
var someElement = new SomeElement();
grid.Children.Add(new SomeElement());
someElement.InvalidateVisual();
.
Итак, мой вопрос, почему Grid grid
не нарисован, когда он добавляется исключительно на визуальное дерево.Какова важность добавления его к генеракодичению имущества?
И в целом, как называется Onrender?Через визуальное дерево или генеракодицетагкод свойства или?
Решение
AddVisualChild не делает то, что вы можете думать, это так.
AddVisualChild - это просто для создания детей-родительских отношений между двумя визуальными эффектами в VisualTree. Ничего более или менее. Visualtree не делает все, что находится внутри.
AddLogicalChild делает то же самое, просто это создает логикатрий. LogicalTree обычно меньше и короче, чем Visualtree, что означает его быстрее.
Чтобы полностью поддерживать рендеринг ваших детей, вам необходимо позвонить в измерении метода на них и устраивать метод. Futhermore, вам нужно изменить свойство VisualChildrencount вашего родителя и передавать правильный размер каждому ребенку, и вам нужно разместить их на правильном положении, чтобы пользователь мог их увидеть. Тогда все получат.
Вызов AddVisualChild в покое и неверно ничего не делает.
Коллекция детей, с другой стороны, это UilementCollection, которая делает все вышеперечисленные вещи, которые я упоминал автоматически. Вот почему он работает с joys.add (...).
Futhermore, вы всегда должны работать с детской коллекцией вместо того, чтобы писать свои вещи.
Как упомянул подход, многие проблемы могут быть решены, просто имея правильный MVVM.
Может быть, вам не нужно иметь пользовательский контроль.