Как сбросить представление Silverlight в ViewModel без создания нового экземпляра - PullRequest
0 голосов
/ 08 января 2010

В моем приложении я создаю новый экземпляр моего представления в конструкторе связанной с ним модели представления. У меня также есть некоторые события, на которые можно подписаться с помощью агрегатора событий.

public class FooViewModel
{
    private FooView TheView { get; set; }
    private IEventAggregator Aggregator { get; set; }

    public FooViewModel()
    {
        Aggregator = new EventAggregator();
        Aggregator.GetEvent<ListReceivedEvent>()
            .Subscribe(OnListReceived, ThreadOption.UIThread, true);
        TheView = new FooView();
    }

    public void OnListReceived(ObservableCollection<int> items)
    {
        TheView.Items = items;
    }
}

Проблема в том, что, если представлением манипулируют, и я перезагружаю его для другого типа Foo, тогда останутся остатки его предыдущего использования. Один из способов обойти это - создавать новое представление каждый раз, когда требуется другой контекст, но это вызывает проблемы с RegionManager, также используемым в приложении. Есть ли какой-нибудь способ вернуть Silverlight View в исходное состояние, не создавая его новый экземпляр?

1 Ответ

0 голосов
/ 19 января 2010

Не автоматически. Я думаю, вам нужно написать метод Reset () в представлении, где вы вручную очищаете все, что нужно очистить.

...