Мой эксперимент с Caliburn
По сути, я просто пытаюсь установить активный элемент, затем деактивировать его и затем установить это снова.
переключение между страницей 1 и страницей 2 или просто открытие и закрытие страницы 1 или 2 несколько раз будет иметь тот же результат. Я вижу несколько экземпляров моделей и представлений Page1 и Page2. в DotMemory, когда я делаю снимок.
Это код, который у меня сейчас есть.
Код: Выделить всё
public class ShellViewModel:Conductor
{
private readonly IEventAggregator _eventAggregator;
public ShellViewModel(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
if(eventAggregator != null)
{
_eventAggregator.SubscribeOnUIThread(this);
}
}
protected override async void OnViewLoaded(object view)
{
base.OnViewLoaded(view);
}
public async Task Page1()
{
await OpenModal(new Page1ViewModel());
}
public async Task Page2()
{
await OpenModal(new Page2ViewModel());
}
public async Task OpenModal(IScreen screen)
{
await ActivateItemAsync(screen);
ModalIsVisible = true;
}
private bool _modalIsVisible;
public bool ModalIsVisible { get { return _modalIsVisible; } set { _modalIsVisible = value; NotifyOfPropertyChange(() => ModalIsVisible); } }
public async Task CloseModal()
{
await DeactivateItemAsync(ActiveItem,true, new CancellationToken());
ModalIsVisible = false;
}
public async Task HandleAsync(OpenModalEvent message, CancellationToken cancellationToken)
{
await OpenModal(message.Modal);
}
}
Я мог бы сохранить экран где-нибудь и снова активировать его, а не заново это снова. но я думаю, что мне бы хотелось просто получить новую модель представления/представление.
Я, вероятно, просто неправильно все понимаю. но если бы кто-то мог направить меня по правильному пути, это было бы очень признательно.
если я попытаюсь сохранить ссылку на свой экран для повторного использования, я все равно увижу несколько экземпляров представления
но только одна модель представления, так что я думаю, это улучшение, но не совсем то, что я ожидаю.
Подробнее здесь: https://stackoverflow.com/questions/784 ... uck-in-mem
Мобильная версия