У меня есть кнопка, которая выдвигает меню, используя раскадровку, вызывая begin()
на нем, например,
private void ShareBtn_Click(object sender, RoutedEventArgs e)
{
SlideIn.Begin();
}
На сетке, которая затем выдвигается, есть кнопки.
Затем каждая кнопка сдвигает сетку назад, и когда эта раскадровка завершает действие для кнопки, затем выполняется так:
private void PictureBtn_Click(object sender, RoutedEventArgs e)
{
CertificateDisplay.SaveAsPicture();
}
private void FacebookBtn_Click(object sender, RoutedEventArgs e)
{
App.facebookSuccess = false;
NavigationService.Navigate(new Uri("/FBLogin.xaml", UriKind.Relative));
}
private void SMSBtn_Click(object sender, RoutedEventArgs e)
{
SlideOut.Begin();
SlideOut.Completed += delegate(object s, EventArgs se) { SlideOut_Completed(s, se, "Email"); };
}
private void EmailBtn_Click(object sender, RoutedEventArgs e)
{
SlideOut.Begin();
SlideOut.Completed += delegate(object s, EventArgs se) { SlideOut_Completed(s, se, "Email"); };
}
void SlideOut_Completed(object sender, EventArgs e, String shareType)
{
switch (shareType)
{
case "Email":
...
default:
break;
}
}
Ошибка, с которой я столкнулся, если не могу удалить анонимные функции из стека событий.
Мне удалось решить эту проблему, сделав shareType
общую переменную для всех вышеперечисленных функций и не используя анонимный делегат, а затем удалив "именованные" функции из стека событий при вызове OnNavigatedFrom
.
Есть ли способ сделать это, продолжая использовать эти делегаты, потому что это выглядит аккуратнее?