Silverlight 2和MVP模式
时间:2020-03-06 14:44:48 来源:igfitidea点击:
关于我如何使MVP与Silverlight协同工作的任何想法?我如何解决没有引发负载事件的事实?
这个观点我有:
public partial class Person: IPersonView { public event RoutedEventHandler Loaded; public Person() { new PersonPresenter(this); InitializeComponent(); } public Person Person { set { Person.ItemsSource = value; } } }
而我的主持人:
public class PersonPresenter { private readonly IPersonView _view; private readonly ServiceContractClient _client; public PersonPresenter(IPersonView view) { _client = new ServiceContractClient(); _view = view; WireUpEvents(); } private void WireUpEvents() { _view.Loaded += Load; } private void Load(object sender, EventArgs e) { _client.GetPersonCompleted += Client_GetPerson; _client.GetPersonAsync(); } private void Client_GetPerson(object sender, GetPersonCompletedEventArgs e) { _view.Person= e.Result; } }
由于Loaded事件似乎没有被调用,对我来说什么都没有发生,我该如何解决呢?
解决方案
我相信在控件已被初始化,加载,呈现并准备使用时,将调用load事件。这意味着只要我们不将其放置在可见的容器中(以便呈现),就不会引发已加载的事件。
Tim Ross通过源代码很好地介绍了Silverlight MVP实现。
我们可以考虑使用MVC#-具有Silverlight 2.0支持的Model View Presenter框架。
奥列格·朱可夫(Oleg Zhukov)