Управление ресурсами при изменении содержимого окна - PullRequest
4 голосов
/ 27 февраля 2011

Прежде всего, я не очень хорошо разбираюсь в том, как перемещаться между несколькими «страницами» окна.

Например, у меня есть окно с именем MainWindow.Внутри этого у меня есть верхний и нижний колонтитулы.Посередине находится панель с контентом.Первоначально эта панель будет содержать содержимое A. После нажатия чего-либо в A я хочу удалить A из представления и показать новую панель с содержимым B. Однако я хочу, чтобы B отображалось в том же окне (т. Е. Не скрывать окно иоткрыть новый).Является ли скрытие / отображение этих панелей правильным способом?

Если использование механизма переключения панелей является правильным способом, тогда я беспокоюсь об управлении ресурсами.Если я установлю панель A невидимой, а панель B видимой, будут ли по-прежнему загружаться ресурсы с обеих панелей?Если у меня есть большое количество панелей для переключения, я бы не хотел загружать контент для всех, а вместо этого активную.Как мне убедиться, что я правильно управляю ресурсами и памятью между этими различными представлениями?

Если у меня совершенно неверное представление о том, как переключать представления в одном окне, пожалуйста, дайте мне знать.Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

Вместо того, чтобы включать и выключать видимость, вы должны поставить contentControl и переключить его содержимое на другие UserControls.

Таким образом, нет ссылки на UserControl, который находится за кадром, и вы можете лучше справляться с проблемами памяти.

1 голос
/ 27 февраля 2011

Один из вариантов - просто использовать один ContentPresenter и помещать туда свои отдельные «панели», но только по одной за раз.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...