Что является эквивалентом OnRender в Silverlight? - PullRequest
2 голосов
/ 16 марта 2010

Я работаю над переносом приложения из WPF в Silverlight.

Приложение использует пользовательские типы, полученные из FrameworkElement (в WPF), для описания фигур и текста, который будет отображаться на Canvas.

Корневой узел приложения WPF переопределяет OnRender(), чтобы выполнить итерацию по коллекции «дочерних» узлов, вызывая Render на каждом дочернем узле для построения визуального дерева.

Silverlight не раскрывает OnRender, но есть подсказки, что тот же эффект может быть достигнут при использовании ControlTemplate.

Это путь, и есть ли хорошие примеры использования этого метода? Я немного погуглил (разгул?) И не нашел ничего действительно убедительного.

Ответы [ 2 ]

3 голосов
/ 16 марта 2010

Прямой замены OnRender нет, но если вы прочитаете http://msdn.microsoft.com/en-us/library/dd351483(v=VS.95).aspx,, вы увидите, что MeasureOverride и ArrangeOverride дают вам контроль над визуальным деревом в вашем контроле .

1 голос
/ 16 марта 2010

То, что сказал Гейб, но есть событие, которое происходит, когда Silverlight заканчивает "Rendering", называется CompositionTarget.Rendering:

http://msdn.microsoft.com/en-us/library/system.windows.media.compositiontarget.rendering(VS.95).aspx

Это ближайший аналог "OnRenderFrameComplete"

Я бы по-прежнему предложил использовать переопределения Measure и Arrange, поскольку они являются "правильным" способом сделать это.

...