В настоящее время я работаю над забавным решением для себя, чтобы создать планы тренировок для спортзала. Решение на Github
Это простое решение WPF, использующее Caliburn.Micro для упрощения получения соединений для шаблона MVVM.
В моем MainView у меня есть TabControl:
MainView.xaml:
<TabControl x:Name="Items" />
Со следующим кодом для ViewModel:
public MainViewModel()
{
DisplayName = "Plan2Fit";
Items.Add(new CreatePlanViewModel(_exerciseProviderViewModel));
Items.Add(new ExerciseManagementViewModel(_exerciseProviderViewModel));
}
У меня только две ViewModels, отображаемые в TabControl, один для управления упражнениями исохраните их в формате xml, чтобы иметь базу данных ваших упражнений и базу данных, в которой вы впоследствии сможете выбирать упражнения для своего плана.
Проблема: При запуске все выглядит хорошо, но каккак только я переключаюсь между вкладками, одна из них может потерять свой дочерний элемент управления по любой причине.
Я уже пробовал следующее:
MainView.xaml:
<TabControl x:Name="Items" cal:Message.Attach="[Event SelectionChanged] = [Action Reload]" />
MainViewModel:
public void Reload()
{
_exerciseProviderViewModel = new ExerciseProviderViewModel();
Items.Refresh();
DisplayName = "Plan2Fit";
}
Это делает ошибку реже, но она все еще существует.
Я уже нашел этот вопрос ... решения, которые яудалось найти все работают с МVVM, но не с Caliburn.Micro, так что я действительно не имею никакой идеи, как решить эту проблему.Я пробовал док-станцию Avalon, но мне не удалось заставить его работать с привязкой Caliburn x: Name = "Items"
Примечание. Если вы хотите воссоздать ошибку с помощью моего решения, у вас естьЧтобы добавить «Упражнения», выберите изображение на вкладке «Управление упражнениями» и нажмите «Добавить» (Вы можете добавить одно и то же «Упражнение» несколько раз).Пока нет обработки ошибок или тестирования, так как это в состоянии, в котором я хочу проверить, если оно вообще работает.