Silverlight 2和MVP模式

时间:2008-09-25 20:19:37

标签: silverlight mvp

关于如何让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事件似乎没有被召唤,我该如何解决这个问题呢?

3 个答案:

答案 0 :(得分:3)

Tim Ross对Silverlight MVP实现有很好的介绍,包括源代码。

答案 1 :(得分:1)

我相信当控件初始化,加载,渲染并准备好使用时,会调用加载的事件。这意味着只要您不将它放在可见容器内(以便渲染它),加载的事件就不会上升。

答案 2 :(得分:0)

您可以考虑使用MVC# - 支持Silverlight 2.0的Model View Presenter框架。

Oleg Zhukov