Перерисовать холст Silverlight - PullRequest
2 голосов
/ 16 июня 2011

В моем приложении я рисую комнату, основываясь на некоторых данных, которые у меня есть. В этой «комнате» у меня есть полки (которые являются не чем иным, как сеткой макетов). Пользователь может выполнить несколько действий против ячеек в тех сетках, которые представляют секции полки. (например, выделение места на полке для продукта). После того, как действие над комнатой завершено, я хотел бы перерисовать комнату, как если бы страница только что была загружена в первый раз. Я не могу заставить это работать.

Я попытался очистить детей холста и затем вернуться в комнату, но у меня только пустая страница. Код довольно прост:

LayoutRoot.Children.Clear();
NavigationService.Navigate(new Uri("/TheRoom", UriKind.Relative));

Я пробовал множество других методов, но ни один из них не работал. Может кто-нибудь сказать мне, если я использую правильный подход здесь или я что-то упускаю, что вы можете увидеть?

1 Ответ

0 голосов
/ 01 сентября 2011

Как насчет вызова InvalidateArrange ();или InvalidateVisual ();Я не могу вспомнить, какие из этих функций доступны для Canvas против Panel и Silverlight против WPF, но я знаю, что некоторые из них.

Если Canvas не предлагает подходящий метод аннулирования, вы всегда можете наследоватьпанель и создать свой собственный "Canvas" и переопределить InvalidateArrange (), чтобы сделать то, что вам нужно.

...