В моем приложении я создаю новый экземпляр моего представления в конструкторе связанной с ним модели представления. У меня также есть некоторые события, на которые можно подписаться с помощью агрегатора событий.
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 в исходное состояние, не создавая его новый экземпляр?