2014-03-27 6 views
-2

Привет Было интересно, кто-нибудь может пролить свет на перевод приведенного ниже кода на vb.net. Любая помощь будет оценена.Перевод Dispatcher.Invoke делегат от C# до VB.NET

void ShowNewPage() 
{ 
    Dispatcher.Invoke((Action)delegate 
    { 
     if (contentPresenter.Content != null) 
     { 
      UserControl oldPage = contentPresenter.Content as UserControl; 

      if (oldPage != null) 
      { 
       oldPage.Loaded -= newPage_Loaded; 

       UnloadPage(oldPage); 
      } 
     } 
     else 
     { 
      ShowNextPage(); 
     } 

    }); 
} 
+3

Вы можете попытаться найти свой заголовок в google – Jeff

+0

Thansk, но я попробовал сайты переводов и получил то же самое, но я получаю сообщение об ошибке «Однострочный оператор lambdas должен содержать только одно утверждение» – user3469277

+3

Так что задайте вопрос о *, что ошибка * ... покажите свой код, покажите, что вы пробовали, и объясните ошибку. Вы получите лучшие ответы таким образом. Не просто просите людей «сделать это для меня». –

ответ

2

Быстрый поиск в Google для: translate C# to vb.net поможет вам на вашем пути;)

Но ради ответить, вот вы идете!

ОБНОВЛЕНО:

Private Sub ShowNewPage() 
    Dispatcher.Invoke(DirectCast(
          Sub() 
           If contentPresenter.Content IsNot Nothing Then 
            Dim oldPage As UserControl = TryCast(contentPresenter.Content, UserControl) 

            If oldPage IsNot Nothing Then 
             oldPage.Loaded -= newPage_Loaded 
             UnloadPage(oldPage) 
            End If 
           Else 
            ShowNextPage() 
           End If 
          End Sub, 
          Action)) 
End Sub 
+0

Lol мы, должно быть, использовали тот же переводчик;) –

+1

@EvanL Действительно! +1 http://www.developerfusion.com/tools/convert/csharp-to-vb/?batchId=69fa852d-d795-48f1-b5b9-f0cfc5a51a54;) – Dayan

+0

На самом деле я использовал [Конвертер Telerik] (http: // converter .telerik.com /), но этот фрагмент вышел идентичным, предположим, что не существует слишком много способов написать этот конкретный блок;) –

1

онлайн переводчики не всегда работают. Они особенно плохи в linq и лямбдах.

Вот моя попытка перевода:

Private Sub ShowNewPage() 
    Dispatcher.Invoke(Sub() ShowNewPageCallback()) 
End Sub 

Private Sub ShowNewPageCallback() 
    If contentPresenter.Content IsNot Nothing Then 
     Dim oldPage As UserControl = TryCast(contentPresenter.Content, UserControl) 

     If oldPage IsNot Nothing Then 
      RemoveHandler oldPage.Loaded, AddressOf newPage_Loaded 
      UnloadPage(oldPage) 
     End If 
    Else 
     ShowNextPage() 
    End If 
End Sub 

Для справок в будущем, если вы решите оставить вопрос, как это в будущем следует упомянуть, что вы попытались перевести его и показать ваш перевод. Большинство людей любят видеть, что вы приложили немало усилий для самостоятельной работы.