WPF объявление глобального свойства с использованием её в нескольких ViewModel

При создании насыщенного MVVM приложения появилась необходимость разделения MainViewModel, отвечающей за модель представления главного окна, на несколько частей. Имеются также зависимые ViewModels (содержат и UserControls), зарегистрированные через сервис-локатор (используется MicrosoftExtensionsHosting):

DataContext="{Binding MainWindowModel, Source={StaticResource Locator}}"
internal class ViewModelLocator
{
    public MainWindowViewVM MainWindowModel => 
        App.Host.Services.GetRequiredService<MainWindowViewModel>();
    public UserControlViewVM UserControlWindowModel =>             
        App.Host.Services.GetRequiredService<UserControlViewModel>();
}
public static void ConfigureServices(HostBuilderContext host, IServiceCollection services) => services
    .RegisterServices()
    .RegisterViewModels();

Вопрос: где и как я должен объявить глобальное свойство MyProperty, к которому должны иметь доступ все ViewModels. Может в рамках использования HostBuilder'a также нужно объявить что-то навроде "RegisterGlovalProperties" или что-то в этом духе, чтобы происходило автоматическое внедрение зависимостей?

  1. Объявлять свойство в MainWindowVIewModel с целью последующей передачи как DataContext в UserControlViewModel наверное неправильно, т.к. могут быть еще отдельные полноценные окна, а не только UserControl-элементы.
  2. Правильно ли будет объявить это свойство в файле App.xaml.cs и затем внедрять его во все ViewModels, в т.ч. и в MainViewModel или просто получать к нему доступ через обращение к App.Current?
  3. Еще есть вариант внедрять требуемое свойство в DependencyProperty UserControl ViewModel.
  4. Наиболее удачное решение, которое мне пришло в голову, это в конструкторе UserControl (в Code behind) с собственной ViewModel, обращаться к public-свойствам в MainViewModel через запрос реализации MainViewModel у сервис-локатора и последующего сохранения нужных свойств уже в ViewModel'и UserControl'а. Но так возникает сильная связь (одна ViewModel знает о другой ViewModel), от чего хотелось бы избавиться:
public UserControlView()
{
    var locator = App.Current.Resources["Locator"];
    UserControlWindowVM userControlWindowVM = ((ViewModelLocator)locator).UserControlWindowVM ;
    MainWindowViewModel mainWindowVM = ((ViewModelLocator)locator).MainWindowVM;
    this.MyProperty = mainWindowVM.MyProperty;

    InitializeComponent();
}

Ответы (0 шт):