簡體   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