WPF Singleton UserControl?

Есть ли способ сделать UserControl одноэлементным?

Пример:
У меня есть MainWindow и 2 UserControls {UserControl 'A' и UserControl 'B'}
MainWindow имеет 2 кнопки {Button 'UCA' и Button 'UCB'}
UserControl 'A 'есть TextBox.
При запуске у меня есть UserControl' A ', загруженный в MainWindow.
Когда я нажимаю кнопку' UCB ', UserControl' B 'заменяет UserControl' A ', а когда я нажимаю кнопку' UCA ', UserControl' A 'заменит UserControl' B '.

Мой вопрос:
Когда UserControl 'A' активирован, я набираю "Test" в TextBox, а затем переключаюсь на UserControl 'B'. Я хочу, чтобы, когда я снова переключился на UserControl 'A', текст в TextBox все еще был там. Мое решение - создать одноэлементный UserControl, но я не знаю, как это сделать.

NB: Выше приведен простой пример. Я хочу добиться более сложного, чем просто поддерживать текст в TextBox при переключении между UserControl. Но дело в том, как вызвать тот же экземпляр UserControl, не создавая новый.


person Reyn    schedule 28.11.2012    source источник


Ответы (1)


Вместо этого у вас должны быть загружены оба пользовательских элемента управления в MainWindow и переключаться их видимость при нажатии кнопок. Например, если ваши UserControls имеют имена A и B в Xaml, вы должны сделать следующее в выделенном коде для обработчика UCB.Click:

B.Visibility = Visibility.Visible;
A.Visibility = Visibility.Collapsed;

и наоборот для обработчика UCA.Click.

person K Mehta    schedule 28.11.2012
comment
ну, я забыл упомянуть, что использую анимацию перехода при изменении UserControl. Итак, код очень похож на: transiotion.Content = UserControl; при переключении UserControl. - person Reyn; 28.11.2012