2010-01-08 42 views
0

在我的应用程序中,我在其关联的viewmodel的构造函数中实例化了一个新视图的实例。我还有一些事件可以通过事件聚合器订阅。如何在不创建新实例的情况下重置ViewModel中的Silverlight视图

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视图重置为初始状态而无需实例化它的新实例?

回答

0

不自动。我认为你必须在视图中写一个Reset()方法,手动清除任何需要清除的内容。

相关问题