Предотвращение очереди действий пользователя, когда приложение занято в WPF - PullRequest
0 голосов
/ 14 апреля 2019

Я конвертировал следующие коды vb.net по этой ссылке: WPF - предотвратить очереди действий пользователя, когда приложение занято

ViewModel:

Class MainWindow

Private _appIdle As Boolean = True

Private Sub Hooks_OperationStarted(ByVal sender As Object, ByVal e As Windows.Threading.DispatcherHookEventArgs)
    ApplicationIdle = False
End Sub

Private Sub Hooks_OperationCompleted(ByVal sender As Object, ByVal e As Windows.Threading.DispatcherHookEventArgs)
    ApplicationIdle = True
End Sub

Public Property ApplicationIdle As Boolean
    Get
        Return _appIdle
    End Get
    Set(ByVal value As Boolean)
        _appIdle = value
        RaisePropertyChanged("ApplicationIdle")
    End Set
End Property

Public Sub MainWindowViewModel()
    Application.Current.Dispatcher.Hooks.OperationStarted += AddressOf Hooks_OperationStarted
    Application.Current.Dispatcher.Hooks.OperationCompleted += AddressOf Hooks_OperationCompleted
End Sub

End Class

MainWindow xaml:

IsHitTestVisible="{Binding ApplicationIdle}"

Но я сталкиваюсь с некоторыми ошибками, которые вы видите на этой картинке: https://prnt.sc/nbn55h

Скажите, пожалуйста, как я могу решить эту ошибку?

Ошибка говорит:

RaisePropertyChanged не объявлено.Он может быть недоступен из-за уровня защиты.

Примечание: Я использую .NET 4.5

Поддерживающая ссылка: https://jeremybytes.blogspot.com/2016/01/the-evolution-of-inotifypropertychanged.html

1 Ответ

0 голосов
/ 14 апреля 2019
Class MainWindow
   Implements System.ComponentModel.INotifyPropertyChanged

   Public Event RaisePropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged

   Private _appIdle As Boolean = True

   Private Sub Hooks_OperationStarted(ByVal sender As Object, ByVal e As Windows.Threading.DispatcherHookEventArgs)
      ApplicationIdle = False
   End Sub

   Private Sub Hooks_OperationCompleted(ByVal sender As Object, ByVal e As Windows.Threading.DispatcherHookEventArgs)
      ApplicationIdle = True
   End Sub

   Public Property ApplicationIdle As Boolean
      Get
         Return _appIdle
      End Get
      Set(ByVal value As Boolean)
         _appIdle = value
         RaiseEvent RaisePropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs("ApplicationIdle"))
      End Set
   End Property

   Public Sub MainWindowViewModel()
      AddHandler Application.Current.Dispatcher.Hooks.OperationStarted, AddressOf Hooks_OperationStarted
      AddHandler Application.Current.Dispatcher.Hooks.OperationCompleted, AddressOf Hooks_OperationCompleted
   End Sub

End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...