#c# #wpf #window
#c# #wpf #окно
Вопрос:
У меня есть MainWindow, UserControl и дочернее окно. В MainWindow есть расширитель, содержимое которого задается как экземпляр UserControl, используя следующий код в MainWindowXaml.cs:
public userControl
userControl1 = new userControl();
public MainWindow()
{
InitializeComponent();
expander.Content = userControl1;
}
Затем я помещаю UserControl1 в дочернее окно при нажатии кнопки (кнопка присутствует в заголовке расширителя):
private void b_click(...)
{
Window window = new Window();
window.Content = userControl1;
window.Closing = childWindow_closing;
window.Show();
expander.Visibility = Visibility.Collapsed;
}
Это работает.
Теперь я пытаюсь вернуть UserControl1 обратно в расширитель во время события закрытия дочернего окна:
private void childWindow_closing(...)
{
expander.Visibility = Visibility.Visible;
expander.Content = userControl1;
}
Но это не работает. Дочернее окно закрывается, и отображается расширитель. Но UserControl1 не отображается в расширителе. Есть какие-либо подсказки относительно того, почему?
Примечание: Весь вышеупомянутый код находится в файле MainWindowXaml.cs.
Комментарии:
1. В вашем
childWindow_closing
методе вы не устанавливаетеMainWindow.Expander1.Content
.2. @WSC код находится в файле MainWindowXaml.cs.
3. В вашем
MainWindow
конструкторе, на который вы ссылаетесьExpander1
, но вchildWindow_closing
котором вы ссылаетесьexpander
. Это разные вещи.4. @WSC извините, на самом деле это должен быть расширитель, а не Расширитель1. Я исправлю вопрос.
5. Попробуйте установить
expander.Content = null
, когда вы хотите переместить его в дочернее окно.
Ответ №1:
Как @WSC предлагает установить расширитель.Content = null; устраняет проблему.