Как явно преобразовать MouseButtonEventArgs в объект, имеющий .Tag - PullRequest
0 голосов
/ 09 мая 2019

Я превратил Option Strict в On (потому что я хочу преобразовать весь этот код из VB в C #), и есть одна ситуация, которую я не могу понять.Вот фрагмент кода:

Private Sub MessageClicked(sender As Object, e As MouseButtonEventArgs)
    Dim obMenuItem = e.OriginalSource
    If obMenuItem.Tag IsNot Nothing Then

        Dim Message = MessageCollection.FirstOrDefault(Function(i) i.ID = obMenuItem.Tag.ToString)
        If Message.Outbound = False AndAlso Message.ReadBy = "" Then MarkAsRead(SelectedTractor, obMenuItem.Tag.ToString)
    End If
End Sub

Ошибка возникает всякий раз, когда я пытаюсь использовать obMenuItem после ее объявления.Я знаю, что мне нужно инициализировать его с помощью фразы As, но я не знаю, как я должен его инициализировать.

Я пытался Object и MouseButtonEventArgs, но ни у одного из них нет .tag, к которому я пытаюсь получить доступ.

1 Ответ

0 голосов
/ 10 мая 2019

Свойство Tag объявлено в классе FrameworkElement, поэтому вам необходимо выполнить как минимум следующее приведение типа.Обратите внимание, что в случае, если вам нужен доступ к другим свойствам более производных классов, вы, конечно, должны использовать более производный тип цели для приведения:

Dim obMenuItem As FrameworkElement = CType(e.OriginalSource, FrameworkElement)

Вместо e.OriginalSource, это также кажется более подходящим для приведенияsender объект:

Dim obMenuItem As FrameworkElement = CType(sender, FrameworkElement)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...