Есть идеи, как заставить 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, похоже, не вызывается, как мне это обойти?





Я считаю, что событие loaded вызывается, когда элемент управления инициализирован, загружен, отрисован и готов к использованию. Это означает, что до тех пор, пока вы не поместите его в видимый контейнер (чтобы он отображался), загруженное событие не возникнет.
Тим Росс дает хорошее введение в реализацию Silverlight MVP с исходным кодом.
Олег Жуков
Да, это то, что я в итоге использовал