我有两个UserControls
,例如FirstUserControl
和SecondUserControl
。首先,我使用帮助FirstUserControl
在MainWindow中设置<ContentControl x:Name="contentControl" />
。
public MainWindow()
{
InitializeComponent();
this.contentControl.Content = new LoginControl();
}
但是,当用户按下按钮时,MainWindow中FirstUserControl ContentControl
中的内容必须更改为SecondUserControl。但它并没有发生。 ContentControl仍然是FirstUserControl。可能是什么问题 - 我不知道。
此代码来自FirstUserControl:
private void loginButton_Click(object sender, RoutedEventArgs e)
{
MainWindow mainWindow = new MainWindow(new CheckInCheckOutControl());
}
来自MainWindow的调查员,是否负责Shaning ContentControl:
public MainWindow(ContentControl contentControl)
{
this.contentControl.Content = contentControl;
}
我还试图对MainWindow中的单独方法进行更改 - 但它没有帮助。
答案 0 :(得分:2)
MainWindow mainWindow = new MainWindow(new CheckInCheckOutControl());
创建一个MainWindow的新实例,而不是使用已经打开的MainWindow。不要这样做。
MainWindow拥有FirstUserControl和SecondUserControl,因此MainWindow应该更改它们,而不是FirstUserControl。
在FirstUserControl中创建一个事件
public event EventHandler LoginClick;
private void loginButton_Click(object sender, RoutedEventArgs e)
{
if (LoginClick != null) LoginClick(this, e);
}
拥有FirstUserControl实例的MainWindow中的订阅该事件并更改内容:
public MainWindow()
{
InitializeComponent();
var loginControl = new LoginControl();
loginControl.LoginClick += (senser, e) =>
{
this.contentControl.Content = new CheckInCheckOutControl();
}
this.contentControl.Content = loginControl;
}