Page如何在Window中调用函数

时间:2010-08-19 14:24:34

标签: wpf

我正在写一个WPF程序。现在我有一些问题。 有一个包含框架的窗口,有两个名为A和B的按钮。

在框架内有一个带有按钮C的页面。

问题是:当我单击页面中的C按钮时,如何触发A按钮的事件处理程序?

框架xaml:

<Frame x:Name="Frame1" 
  NavigationUIVisibility="Hidden" 
  Margin="-50,0,-163,-11" 
  Grid.RowSpan="2">
</Frame>

事件处理程序:

 private void button1_Click(object sender, RoutedEventArgs e)
 {
     PageFind p = new PageFind();
     this.Frame1.Content = p;
 }
 private void button2_Click(object sender, RoutedEventArgs e)
 {
   MessageBox.Show("Succeed!!")
 } 

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。我不会进入我认为最好的方式(参见Model-View-ViewModel)并尝试回答你的问题。

Window和Page实例必须能够相互“找到”,这样Window可以通过Page a方法在单击C按钮时执行,或者Window可以使用Page注册事件点击C按钮时会触发。

问题是,Window是否直接访问Page实例,或者您的应用程序是否使用Frame的Navigation框架来处理页面加载?

如果是第一个,那么Window注册一个可以放置在Page类的公共面上的事件将是微不足道的。如果是第二个,你将不得不听Frame的导航服务,以便找到Page实例。

另一种选择是Window的DataContext流向Page。您可以创建一个Window和Page都可以绑定的类,这样当单击Page的按钮时,它可以调用该上下文类中的一个方法,然后该类可以通知Window该按钮被单击。