Удалить элемент WPF во время работы программы с C # - PullRequest
0 голосов
/ 23 ноября 2010

Я хотел получить некоторую информацию от пользователя, прежде чем он увидит или использует программу. В настоящее время у меня просто черный прямоугольник, скрывающий мой графический интерфейс с текстовым полем перед ним. Когда информация вводится в поле, оно у меня появляется, и видимость прямоугольника устанавливается как свернутая.

Они нужны мне только в самом начале программы, и я предполагаю, что они все еще существуют и занимают память в свернутом состоянии Есть ли способ полностью удалить элементы, если я их больше не использую?

Ответы [ 3 ]

0 голосов
/ 23 февраля 2011

Было бы лучше использовать какой-нибудь стандартный элемент пользовательского интерфейса, например, предложенные выше модальные окна, или ChildWindow в silverlight.

Однако, свернутые элементы не должны вызывать проблем с памятью, они вынимаются изрендеринг конвейера.Непрозрачность = 0 будет сохраняться, хотя.Если вы действительно хотите удалить его, родительская панель (например, Grid) имеет коллекцию Children с методом Remove ().

0 голосов
/ 16 апреля 2011

Вы можете сделать это с помощью техники, предназначенной для заставок, как в следующем примере.

Два отличия:

  1. Используйте ShowDialog () вместо Show (), чтобы сделать окно модульным (всегда сверху и останавливать выполнение).

  2. Работать с main.thread, а не с отдельным потоком.

Пример:

Скрыть окно WPF до полной загрузки

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

0 голосов
/ 23 ноября 2010

Почему бы не иметь всплывающее модальное окно, тогда, когда оно закрыто, оно будет автоматически удалено из визуального / логического дерева

например

Window win = new MyPopupWindow();
win.ShowDialog();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...