DataContext - произвольный объект. В вашем случае это все, что разрешается вызовом ServiceLocator.Current.GetInstance () . Когда диалоговое окно закрывается на вашем экране, объект, представляющий его DataContext, все еще находится в области видимости кода, который вы показали.
Это полезно, потому что оно позволяет вам что-то делать в этом диалоговом окне, а затем, после его завершения, извлекать некоторые данные, которые были «установлены» в диалоговом окне (так же, как вы делаете с ReportName и SelectedSite свойства).
Как только диалоговое окно, содержащее ссылку на INewReportViewModel , выходит из области видимости (например, при выходе из метода, в котором создается диалоговое окно), вы можете предположить, что оно «ушло» и GC справиться с этим.