我有一个带有两个窗口的WPF项目,第一个窗口触发事件并拥有自己的事件处理程序,另一个窗口将触发相同的事件,任何想法如何在第一个窗口中使用处理程序来处理第二个窗口中的事件? / p>
答案 0 :(得分: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>
最后做第二次&amp; window2的第3步
答案 1 :(得分: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
}
}
此时你应该问自己是否真的需要两个窗口,或者任何其他容器控制就足够了。