[英]Changing content dynamically in WPF window from UserControl
我有两个UserControls
,例如FirstUserControl
和SecondUserControl
。 在第一I设置FirstUserControl
在主窗口的帮助<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的负责人,它是负责ContentControl的:
public MainWindow(ContentControl contentControl)
{
this.contentControl.Content = contentControl;
}
我也尝试过在MainWindow中对单独的方法进行更改-但这没有帮助。
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.