2011-03-03 3 views
0

J'essaie de comprendre le modèle MVP utilisé dans une application C#/Winforms. créer un formulaire simple qui charge les dossiers et les fichiers dans un listivew.C# MVP - appel de méthode

IDiffView.cs

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

dans MainForm Je possède ce ci-dessous pour la mise en œuvre 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 

Ici, je peu confus comment appeler la méthode pour assigner la clé d'image pour ListViewItem-à-dire AddDirectoryIcon(). Si je devrais conserver AddDirecotryICon() avec la classe MainForm.cs, ou devrais-je passer au présentateur ou dois-je le définir dans IDiffView.

Répondre

0

Je change la PopulateSourceDirectory être quelque chose comme ceci:

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

puis dans l'interface:

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

Dans votre formulaire:

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 }); 
    } 
} 

Et dans votre présentateur vous 'll aura la logique qui obtient les répertoires avec leurs images associées ...