Хорошо, так как моя последняя идея проголосовала, я доказал это. это работает - и я тестировал его в новом приложении WPF, поэтому я знаю, что он работает:
В моем основном событии Window (Window1) Loaded я сделал:
Dim frm As New Window2
frm.ShowDialog()
In мой Window2 Я затенял метод ShowDialog ()
Private _IsModal As Boolean = False 'This will be changed in the IsModal method
Public Property IsModal() As Boolean
Get
Return _IsModal
End Get
Set(ByVal value As Boolean)
_IsModal = value
End Set
End Property
Public Shadows Sub ShowDialog()
IsModal = True
MyBase.ShowDialog()
End Sub
В моем загруженном событии я затем уволил окно сообщения, чтобы убедиться, что свойство IsModal изменено с False на True, и оно дает мне True, поэтому я знаю, что IsModal установлен. Затем MyBase.ShowDialog () заставляет базовый класс загружаться как модальный. Shadows позволяет переопределить поведение по умолчанию, даже если метод ShowDialog () не был объявлен как переопределяемый.
Хотя он не «самостоятельно определяет», он не требует, чтобы вы передавали любое логическое значение извне, и не требует, чтобы вы устанавливали IsModal извне, он устанавливает его внутри себя, он доступен снаружи, если вы так решили использовать его таким образом. Он устанавливает значение только в том случае, если оно загружено с помощью метода ShowDialog (), а не при использовании метода Show (). Я сомневаюсь, что вы найдете гораздо более простой способ сделать это.