Edw*_*uay 2 wpf mvp events mvvm decoupling
我已经通过以下方式解耦了这个WPF应用程序中的事件.
继续脱钩的最佳方法是什么?
Shell.xaml:
<Button x:Name="btnProcess"
Content="Process"
Margin="10"/>
Run Code Online (Sandbox Code Playgroud)
Bootstrapper.cs:
public void Run()
{
Shell shell = new Shell(new Customer());
shell.Show();
}
Run Code Online (Sandbox Code Playgroud)
Shell.xaml.cs:
public Shell(IPerson person)
{
InitializeComponent();
btnProcess.Click +=new RoutedEventHandler(person.Process);
}
Run Code Online (Sandbox Code Playgroud)
Customer.cs:
public class Customer : IPerson
{
public void Process(object sender, RoutedEventArgs e)
{
Button theButton = (Button)sender;
theButton.Content = "Customer processed.";
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码成功地将视图Shell与模型分离,Customer:IPerson以便我可以交换例如以Employee:IPerson自己的方式处理"已处理" 的模型等.这是第一个目标.
但现在:
Processed方法与特定于Button 的方式分离,以便它还可以与一个MenuItem或一个ListView进行对话,该ViewView在视图中触发事件,因此它甚至不必是一个调用它的元素,例如单元测试类?我建议您使用命令而不是经典事件来实现事件处理.它在WPF中很容易,因为命令模式已经实现,你可以告诉你所有的UI输入(按钮,菜单项......)他们的命令是[你的命令的名字]并在一个地方处理所有这些.
| 归档时间: |
|
| 查看次数: |
1863 次 |
| 最近记录: |