1

我有一个带有两个窗口的 WPF 项目,第一个窗口触发事件并有它自己的事件处理程序,另一个窗口将触发相同的事件,知道如何在第一个窗口中使用处理程序来处理第二个窗口中的事件吗?

4

2 回答 2

1

感谢@Cody Gray、@keyboardP 和这篇有用的文章http://geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx

这是一个演示答案的代码片段:

第一步添加一个新的子类:

using System.Windows;

namespace WpfApplication
{
   public class Subclass : Window
   {
    //Event handlers,functions or any potential reused code
   }
}

第二步:进入window1.xaml.cs

namespace WpfApplication
{
     public partial class Window1 : Subclass
     {
       public Window1()
       {
          InitializeComponent();
       }
     }
}

第三步:修改window1的Xaml代码如下:

<src:Subclass 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace:WpfApplication"
    Title="Window1" Height="350" Width="525">
 </src:Subclass>

最后为window2做第二和第三步

于 2013-04-22T10:48:26.673 回答
0

我首先提出的一个简单示例:

<Window x:Class="Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
    <Grid>
        <Window Loaded="Window_Loaded"/>
        <Window Loaded="Window_Loaded"/>
    </Grid>
</Window>

看看两个窗口如何共享事件处理程序:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        //Whatever
    }
}

此时您应该问问自己是否真的需要两个窗口,或者任何其他容器控件就足够了。

于 2013-04-22T08:12:55.230 回答