WPF - Визуальное дерево не используется для рисования?

StackOverflow https://stackoverflow.com//questions/21001959

  •  20-12-2019
  •  | 
  •  

Вопрос

У меня проблемы с проблемами понимания, когда будет вызывается метод 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.

Может быть, вам не нужно иметь пользовательский контроль.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top