Когда я пробую Caliburn micro, кажется, что модель представления и представления застревают в памяти. Что я делаю не такC#

Место общения программистов C#
Ответить
Anonymous
 Когда я пробую Caliburn micro, кажется, что модель представления и представления застревают в памяти. Что я делаю не так

Сообщение Anonymous »

Я сделал репозиторий на github с простым проектом.
Мой эксперимент с 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);

}
}
В основном я только что пытался деактивировать и TryCloseAsync();
Я мог бы сохранить экран где-нибудь и снова активировать его, а не заново это снова. но я думаю, что мне бы хотелось просто получить новую модель представления/представление.
Я, вероятно, просто неправильно все понимаю. но если бы кто-то мог направить меня по правильному пути, это было бы очень признательно.
если я попытаюсь сохранить ссылку на свой экран для повторного использования, я все равно увижу несколько экземпляров представления
но только одна модель представления, так что я думаю, это улучшение, но не совсем то, что я ожидаю.

Подробнее здесь: https://stackoverflow.com/questions/784 ... uck-in-mem
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»