C# 从代码执行事件

C# 从代码执行事件,c#,windows-phone-7,C#,Windows Phone 7,我试图重用我为应用程序上的toggleswitch编写的代码 取消选中开关时,将触发以下代码 private void ToggleSwitch_Unchecked(object sender, RoutedEventArgs e) { //Some code here YAY! } 就像XAML中的符咒一样工作 <toolkit:ToggleSwitch Margin="0,0,12,0" Content="Allow" Checked="ToggleSwitch_Checke

我试图重用我为应用程序上的toggleswitch编写的代码

取消选中开关时,将触发以下代码

private void ToggleSwitch_Unchecked(object sender, RoutedEventArgs e)
{
   //Some code here YAY!
} 
就像XAML中的符咒一样工作

<toolkit:ToggleSwitch Margin="0,0,12,0" Content="Allow" Checked="ToggleSwitch_Checked" Unchecked="ToggleSwitch_Unchecked" x:Name="allowGpsSwitch" IsChecked="true" />

现在我也尝试从C#调用这段代码。我尝试了几种调用ToggleSwitch_非检查代码的方法,但没有成功

在resume中:我想从代码中调用ToggleSwitch_Unchecked立即执行。我知道我可以单独为它创建一个方法,但我想重用我为事件创建的同一个方法


可能是我的想法完全错了吗?

是的,我认为你的想法是错的。事件处理程序的方法签名包含在其他上下文中不需要的参数。为什么不按如下方式构建:

private void ToggleSwitch_Unchecked(object sender, RoutedEventArgs e)
{
   DoSomething()
}

private void DoSomething()
{
   // ...
}

然后,您可以随时执行
DoSomething

您应该能够使用null和EventArgs调用它。空:

ToggleSwitch_Unchecked(null, EventArgs.Empty);
或者用null,null

ToggleSwitch_Unchecked(null, null);

但是这取决于你是否需要使用
sender
e
如果你不使用
(object sender,RoutedEventArgs e)
参数值,那么你真的应该从
/这里的一些代码中创建一个新方法耶部分并从
ToggleSwitch\u取消选中的位置调用它
以及从您希望使用它的任何其他位置调用它。

如果您从传递此和事件参数的代码调用它,您应该说明为什么/如何失败。例如,为空。通常,我会创建一个小型私有方法,并从事件处理程序和代码中调用它。在某些情况下,这比您的内部方法需要使用事件参数要复杂一些,因为从代码调用它时传递什么?!不,他应该传递这个和EventArgs。空而不是空,空谢谢。null,null实际上是有效的。Empty无法编译,表示我有无效参数。不管怎样,我认为@ColinE answer更适合这个案例。谢谢。这是我认为正确的方法,只是需要确认一下。