我正在尝试围绕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中定义它。
答案 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 });
}
}
在您的演示者中,您将拥有获取目录及其相关图像的逻辑......