如何让MainWindow知道在Folder / Page2.xaml中单击了一个Button

时间:2017-02-16 15:05:09

标签: c# wpf xaml

在我的MainWindow.xaml中,我有一个Frame。单击按钮时,此框架的内容将发生变化。因此,如果我单击按钮显示私人客户,框架内容将显示私人客户的网站:

private void privatecustomer_Click(object sender, RoutedEventArgs e)
    {
        Main.Content = new Privatecustomer.privatecustomer_show();
    }

单击此按钮后,框架将更改内容。 新内容现在显示Privatecustomer.privatecustomer_show.xaml。 在这个xaml我有另一个按钮。如果我单击此按钮,MainWindow中框架的内容应更改为“Privatecustomer.privatecustomer_add.xaml”。

但是我如何从privatecustomer_show.xaml告诉MainWindow.xaml,单击privatecustomer_show中的Button addPrivatecustomer并且Main.Content必须更改为

Main.Content = new Privatecustomer.privatecustomer_add();

? 我希望我能在这里得到一些帮助

2 个答案:

答案 0 :(得分:0)

如何在privateWindow.xaml可以订阅的privatecustomer_show.xaml中添加事件。

喜欢这个

  public event EventHandler AddPrivateCustomer;

  protected virtual void OnAddPrivateCustomerEventArgs e) 
  {
     if (AddPrivateCustomer!= null)
        AddPrivateCustomer(this, e);
  }

更新:请注意更新的代码,我在我的第一个版本中犯了一个'''''''''''。

更改您的:     private void privatecustomer_Click(object sender,RoutedEventArgs e)

要:

private void privatecustomer_Click(object sender, RoutedEventArgs e)
{
  var privateCustomerContent=new Privatecustomer.privatecustomer_show();
  privateCustomerContent.AddPrivateCustomer+=onClick_addPrivateCustomer;
  Main.Content = privateCustomerContent;
}

private onClick_addPrivateCustomer(object o,EventArgs e)
{
  // Change Main.Content
}

我们的想法是,您的privatecustomer_show控件会发送事件,以便在想要更改其访问权限之外的内容时进行更改。 您可以完全控制其所有子窗口的MainWindow将订阅每个事件。

答案 1 :(得分:0)

Page2.Tag属性设置为MainWindow的实例(在Xaml中使用Binding,或者只是在代码中设置它)。单击Page2中指定的Button后,只需使用Tag属性(现在是您的MainWindow)。

另一种选择是使用

App.Current.MainWindow

单击按钮时。 (警告。我不知道你的项目的结构,这可能不是你正在寻找的实例)。