繁体   English   中英

从UserControl在WPF窗口中动态更改内容

[英]Changing content dynamically in WPF window from UserControl

我有两个UserControls ,例如FirstUserControlSecondUserControl 在第一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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM