我有一个有两个窗口的WPF项目,第一个窗口触发事件并拥有自己的事件处理程序,另一个窗口将触发相同的事件,任何想法如何在第一个窗口中使用处理程序来处理第二个窗口中的事件?
感谢@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();
}
}
}
第三步:更改windows 1的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>
Finally do second &第三步:
我首先提出的一个简单的例子:
<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>
查看两个windows如何共享事件处理程序:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//Whatever
}
}
此时,您应该问自己是否真的需要两个窗口,或者任何其他容器控件就足够了。