C # MVP - вызов метода - PullRequest
       2

C # MVP - вызов метода

0 голосов
/ 03 марта 2011

Я пытаюсь сосредоточиться на шаблоне MVP, используемом в приложении C # / Winforms. создать простую форму, которая загружает папки и файлы в списке рассылки.

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 голосов
/ 03 марта 2011

Я бы изменил 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 });
    }
}

И у вашего докладчика будет логика, которая объединяет каталоги и связанные с ними изображения ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...