C# “全局”事件处理程序

C# “全局”事件处理程序,c#,wpf,windows-phone-7,windows-phone-8,C#,Wpf,Windows Phone 7,Windows Phone 8,我找了很久,找不到这个问题的答案。这可能只是一个不知道要寻找什么的问题。是否可以为FrameworkElements提供全局处理程序 例如: 第1页 <Grid x:Name="Grid1" Unloaded="GlobalHandler"/> 创建一个具有相同签名的静态方法,然后在页面中从各个处理程序调用该静态方法 public class EventHandlerHelper { public static GlobalUnload(object sender, Route

我找了很久,找不到这个问题的答案。这可能只是一个不知道要寻找什么的问题。是否可以为FrameworkElements提供全局处理程序

例如:

第1页

<Grid x:Name="Grid1" Unloaded="GlobalHandler"/>

创建一个具有相同签名的静态方法,然后在页面中从各个处理程序调用该静态方法

public class EventHandlerHelper
{
  public static GlobalUnload(object sender, RoutedEventArgs e)
  {
    // work
  }
}

public class Page1
{
   public void GlobalHandler(object sender, RoutedEventArgs e)
   {
      EventHandlerHelper.GlobalUnload(sender, e);
   }
}

public class Page2
{
   public void GlobalHandler(object sender, RoutedEventArgs e)
   {
      EventHandlerHelper.GlobalUnload(sender, e);
   }
}

创建一个具有相同签名的静态方法,然后在页面中从各个处理程序调用该静态方法

public class EventHandlerHelper
{
  public static GlobalUnload(object sender, RoutedEventArgs e)
  {
    // work
  }
}

public class Page1
{
   public void GlobalHandler(object sender, RoutedEventArgs e)
   {
      EventHandlerHelper.GlobalUnload(sender, e);
   }
}

public class Page2
{
   public void GlobalHandler(object sender, RoutedEventArgs e)
   {
      EventHandlerHelper.GlobalUnload(sender, e);
   }
}

如果您想更多地使用XAML,您可以在ResourceDictionary中为样式声明一个EventSetter,并将所述字典合并到任何需要它的页面中

从这里直接感谢用户

然后将其添加到每个页面的XAML中

<Page>
    <Page.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Page.Resources>

    <!-- rest of page -->

</Page>

如果您想更多地使用XAML,您可以在ResourceDictionary中为样式声明一个EventSetter,并将所述字典合并到任何需要它的页面中

从这里直接感谢用户

然后将其添加到每个页面的XAML中

<Page>
    <Page.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Page.Resources>

    <!-- rest of page -->

</Page>

网格在不同的页面上。非常感谢。我想知道这样的事情,但仍然很好奇是否有一种方法可以做到这一点,而不必每次都调用静态方法。哦,好吧网格在不同的页面上。非常感谢。我想知道这样的事情,但仍然很好奇是否有一种方法可以做到这一点,而不必每次都调用静态方法。哦,好吧我投了更高的票。但这个答案对这个问题是无效的。Silverlight中没有事件设定者。我把它投了赞成票。但这个答案对这个问题是无效的。Silverlight中没有事件设定器。
void MyResourceDictionary_GlobalHandler(object sender, MouseButtonEventArgs e)
{
    //Do something with grid here
}
<Page>
    <Page.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Page.Resources>

    <!-- rest of page -->

</Page>