如何在不创建新实例的情况下在ViewModel中重置Silverlight视图

时间:2010-01-08 14:46:30

标签: silverlight silverlight-3.0 mvvm prism

在我的应用程序中,我在其关联的viewmodel的构造函数中实例化了我的视图的新实例。我还有一些事件要订阅事件聚合器。

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 :(得分:0)

不自动。我认为您必须在View中编写一个Reset()方法,您可以手动清除需要清除的任何内容。