У меня есть два вида и один viewModel как dataContext. после запуска приложения он запускает два экземпляра viewModels. проблема заключается в том, как создать только один экземпляр. Я использую mvvm light. и извините за мой английский :)C# wpf mvvm light несколько представлений один экземпляр вида модели
ответ
Не используйте DataContext вместо использования StaticResource!
Попробуйте это:
Для первого взгляда
<FirstView.Resources>
<local:CommonViewModel x:Key="commonVM"/>
</FirstView.Resources>
Сделайте то же самое для второго вида. Теперь, когда вы что-то обязательным, говоря ключ в виде StaticResource как:
<TextBlock Text={Binding someTextProp,Source={StaticResource commonVM}}/>
Это должно работать
Итак, если я понимаю, что вы говорите.
Вы получаете два экземпляра вашей модели View-Model, но на самом деле вам нужен только один экземпляр вашей модели View, который может быть разделен между двумя представлениями.
Регистрация вашего View-модель в ViewModelLocator Класс:
public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<Model.IDataService, Data>();
}
else
{
SimpleIoc.Default.Register<Model.IDataService, Model.DataService>();
}
SimpleIoc.Default.Register<MainViewModel>();
}
/// <summary>
/// Gets the Main property.
/// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public MainViewModel Main => ServiceLocator.Current.GetInstance<MainViewModel>();
/// <summary>
/// Cleans up all the resources.
/// </summary>
public static void Cleanup()
{
}
}
Затем убедитесь, чтобы получить DataContext для обоих Взгляды из названия (он должен быть создан, если вы сделали новый проект MVVM Light). вы представили свою модель View в классе ViewModelLocator, в моем примере она установлена как Main. Вы можете сделать это, используя ViewModelLocator как статический ресурс на ваш взгляд в XAML коде - как это:
<Window x:Class="mvvmLight.View.YourView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
DataContext="{Binding Main, Source={StaticResource Locator}}">
Было бы хорошо, чтобы увидеть некоторые из кода, что бы сделать его легче найти проблему.
Вставьте привязку DataContext как к вашим представлениям, так и к View-Model и ViewModelLocator (если у вас есть).
благодарим за ответ! и счастливый новый год :) Я отвечу позже – bmo
- 1. WPF MVVM Light Navigation
- 2. Есть два вида ViewModels в MVVM Light?
- 3. MVVM Light WPF Messenger
- 4. mvvm light wpf unregister
- 5. WPF MVVM два вида, одна модель вида
- 6. MVVM несколько представлений
- 7. C# WPF MVVM Light CanExecute не распознается
- 8. Изменение вида Wpf MVVM
- 9. Некоторые вопросы MVVM (WPF C#)
- 10. Как вызвать другой конструктор моделей представлений в MVVM Light
- 11. MVVM Light создает несколько экземпляров DataService
- 12. MVVM Light Messeging issue
- 13. навигация/загрузка различных представлений на WPF/MVVM
- 14. wpf mvvm light item item click eventtocommand
- 15. Перейдите через UserControl с MVVM LIGHT (WPF)
- 16. MVVM light несколько экземпляров usercontrol
- 17. MVVM Light Несколько контекстов данных
- 18. WPF MVVM Light - привязка SelectedItem не меняется
- 19. prism vs mvvm light для wpf
- 20. MVVM Light & WPF - привязка Несколько экземпляров окна в ViewModel
- 21. не может создать экземпляр viewmodellocator в C# mvvm light
- 22. Wpf MVVM один ObservableCollection несколько ListViews
- 23. Составление представлений WPF и моделей MVVM
- 24. WPF Несколько окон с MVVM
- 25. Переключение представлений на MVVM
- 26. WPF MVVM Light Messenger и Prism EventAggregator
- 27. Проводка в MVVM Light для WPF
- 28. Приложение WPF с использованием MVVM Light Toolkit
- 29. Простая информация в приложении WPF MVVM light
- 30. MVVM Light WPF Drag and Drop
Можете ли вы просто сделать модель View Singleton? –
Что значит? Я слышал об этом шаблоне, но никогда не использовал их. и не возражаете, как реализовать это на viewModel :) – bmo
Мне нужно поделиться некоторыми командами и привязкой между представлениями – bmo