MVP - 将数据从视图获取给演示者

本文关键字:获取 视图 数据 MVP | 更新日期: 2023-09-27 18:37:12

我正在尝试在一个简单的 C# WinForms 应用程序中练习实现 MVP 模式。视图左侧是一个树视图,其中包含应用程序保存的文件列表;视图右侧是一个 DataGridView,用于显示在树视图中单击的任何文件,或用于键入以另存为新文件。这些文件只是使用二进制格式化程序写入磁盘的字典对象。

我为视图创建了一个界面:

public interface IMappingsView
{
    event EventHandler SaveMapping;
    event EventHandler NewMapping;
    event EventHandler<DeleteArgs> DeleteMapping;
    event EventHandler PasteData;
    event EventHandler NodeClicked;
}

视图上的删除按钮具有以下单击事件处理程序:

private void buttonDeleteMapping_Click(object sender, EventArgs e)
{
    var node = treeView1.SelectedNode.Text;
    var args = new DeleteArgs(Path.Combine(RootDir,node));
    if (DeleteMapping != null)
    {
        DeleteMapping(this, args);
        dataGridView1.Rows.Clear();
        RefreshTreeView();
    }
}

将信息从视图传递到演示者的最佳方法是什么?我觉得每个场景都需要自定义事件参数是非常错误的。

MVP - 将数据从视图获取给演示者

通过界面将所需的数据作为属性提供。

假设您有一个要公开的名字和姓氏字段...

public interface IMappingsView
{
    event EventHandler SaveMapping;
    event EventHandler NewMapping;
    event EventHandler<DeleteArgs> DeleteMapping;
    event EventHandler PasteData;
    event EventHandler NodeClicked;
    string FirstName {get;set;}
    string LastName {get;set;}
}

然后在实现接口的表单中,

string FirstName {
    get {
        return textFirstName.Text;
    }
    set { 
        textFirstName.Text = value;
    }
}

举个例子。