C#MVP - 方法调用

时间:2011-03-03 15:04:35

标签: c# mvp

我正在尝试围绕C#/ Winforms应用程序中使用的MVP模式。创建一个简单的表单,在listivew中加载文件夹和文件。

IDiffView.cs

 public interface IDiffView
{
    string SourceFolderPath{ get; set; }
    string RemoteFolderPath{ get; set; }
    string GetFolderPath();
    void PopulateSourceDirectory(IEnumerable<string> dirs);
}
在MainForm中的

我有以下针对PopulateSourceDirectory()的实现。

MainForm.cs

 #region IDiffView Members
 public void PopulateSourceDirectory(IEnumerable<string> dirs)
    {
        foreach (var directory in dirs)
        {
            ListViewItem item = new ListViewItem();
            item.Group = lstViewSource.Groups[0];
            item.Text = Path.GetFileName(directory);
            **//item.ImageKey = AddDirectoryIcon();**
            item.Tag = directory;

            lstViewSource.Items.AddRange(new ListViewItem[] { item });
        }
    }
#endregion

这里我很困惑如何调用为listviewItem分配图像键的方法,即 AddDirectoryIcon()。 我是否应该将AddDirecotryICon()与MainForm.cs类保持一致,或者我应该转移到演示者还是需要在IDiffView中定义它。

1 个答案:

答案 0 :(得分:0)

我会将PopulateSourceDirectory更改为:

public class ImageDirectory
{
   public string Directory{get;set;}
   public Image Image {get;set;} //or whatever type ListViewItem.ImageKey is...
}

然后在你的界面中:

public interface IDiffView
{
    string SourceFolderPath{ get; set; }
    string RemoteFolderPath{ get; set; }
    string GetFolderPath();
    void PopulateSourceDirectory(IEnumerable<ImageDirectory> dirs);
}

以您的形式:

public void PopulateSourceDirectory(IEnumerable<ImageDirectory> dirs)
{
    foreach (var directory in dirs)
    {
        ListViewItem item = new ListViewItem();
        item.Group = lstViewSource.Groups[0];
        item.Text = Path.GetFileName(directory.Directory);
        item.ImageKey = directory.Image;
        item.Tag = directory;

        lstViewSource.Items.AddRange(new ListViewItem[] { item });
    }
}

在您的演示者中,您将拥有获取目录及其相关图像的逻辑......