Я отключил события в этом приложении WPF следующим образом.Как отделить этот пример WPF от MVC, MVP или MVVM?
Каков наилучший способ продолжения развязки?
Shell.xaml:
<Button x:Name="btnProcess"
Content="Process"
Margin="10"/>
Bootstrapper.cs:
public void Run()
{
Shell shell = new Shell(new Customer());
shell.Show();
}
Shell.xaml.cs:
public Shell(IPerson person)
{
InitializeComponent();
btnProcess.Click +=new RoutedEventHandler(person.Process);
}
Customer.cs:
public class Customer : IPerson
{
public void Process(object sender, RoutedEventArgs e)
{
Button theButton = (Button)sender;
theButton.Content = "Customer processed.";
}
}
Приведенный выше код успешно отделяет вид Shell
из модели Customer:IPerson
так, что можно поменять в например, модель Employee:IPerson
и т. д., которая обрабатывает «Обработанную» по-своему. Это была первая цель.
Но теперь:
- как я отвязать метод
Processed
от разговора конкретно к кнопке, так что он мог бы также поговорить с MenuItem или ListView, который выстреливает событие в представлении и так что он даже не должен быть элементом, который его вызывает, например единичный тестовый класс? - как изменить другие элементы вида кроме отправителя (кнопки), например. как изменить строку состояния в Shell? Я вижу два пути:
- я мог либо построить контейнер который содержит все точки зрения и инъекционные контейнер в Клиенту при создании, то клиент может смотреть в контейнере и манипулируют вид вызова в любом случае он хочет (хотя Мне нужно было бы как-то совместить представление, которое отправило событие и представление в контейнере как одно и то же)
- Я мог как-то отправить весь объект (объект Window) в Model с eventargs при запуске события, хотя модели потребуется некоторый способ узнать (через интерфейс), какие области были доступны для управления во время выполнения
- Как бы вы продолжали это приложение в направлении более развязанного дизайна?
- Какой шаблон это на самом деле, например. MVC, MVP, MVVM? Я вижу только представление (оболочка) и модель (клиент).
- Как мог бы предоставить докладчик?
- Как бы взорвался ViewModel?
- Как бы входил контроллер?
спасибо, я подозревал это и сейчас читаю статью MSDN по командам: http://msdn.microsoft.com/en-us/magazine/cc785480.aspx –