命中一堵墙,我是新的MVVM结构,需要帮助显示我的树。我需要显示一个像树一样的文件浏览器。在我转移到mvvm后,我的树停止显示。我用它里面的方法建立了一个模型来构建一个文件树。下面是我的模型。可选的TreeView文件浏览器MVVM,不能显示树
public class UpdateContents
{
public string visibleName { get; set; }
public string fullPath { get; set; }
public bool isParent { get; private set; }
public bool? _isSelected { get; set; }
public UpdateContents _parent;
public List<UpdateContents> children { get; private set; }
public bool? isInitiallySelected { get; set; }
public UpdateContents(string path, bool parent)
{
fullPath = path;
visibleName = path.Substring(path.LastIndexOf('\\') + 1);
isParent = parent;
this.children = new List<UpdateContents>();
}
public void Initialize()
{
foreach (UpdateContents child in this.children)
{
child._parent = this;
child.Initialize();
}
}
public UpdateContents CreateDirectory(string directory)
{
UpdateContents groot = new UpdateContents(directory, true);
groot.isInitiallySelected = true;
CreateFiles(directory, groot);
foreach (string dir in Directory.EnumerateDirectories(directory))
{
UpdateContents babygroot = new UpdateContents(dir, true);
CreateFiles(dir, babygroot);
CreateFolders(dir, babygroot);
groot.children.Add(babygroot);
}
groot.Initialize();
return groot;
}
private void CreateFiles(string path, UpdateContents parent)
{
foreach (string file in Directory.EnumerateFiles(path))
{
UpdateContents files = new UpdateContents(file, false);
parent.children.Add(files);
}
parent.Initialize();
}
private void CreateFolders(string path, UpdateContents Parent)
{
foreach (string folder in Directory.EnumerateDirectories(path))
{
UpdateContents folders = new UpdateContents(folder, true);
CreateFiles(folder, folders);
CreateFolders(folder, folders);
Parent.children.Add(folders);
}
Parent.Initialize();
}
}
我有一个视图模型,但老实说它没有做任何事情。自从改为mvvm以来,我编辑了它。以下是视图模型。
public class MainWindowVM
{
public string rootfile { get; set; }
public string version { get; set; }
public string date { get; set; }
public string _name { get; set; }
public string _path { get; set; }
public RelayCommand onBrowse { get; set; }
public MainWindowVM()
{
onBrowse = new RelayCommand(onBrowseCommand);
}
public void onBrowseCommand (object commandInvoker)
{
Microsoft.Win32.OpenFileDialog win = new Microsoft.Win32.OpenFileDialog();
Nullable<bool> result = win.ShowDialog();
if (result == true)
{
string filename = win.FileName;
rootfile= filename;
rootfile = filename;
int index = rootfile.Length;
index = index - 4;
rootfile = rootfile.Remove(index);
//Get file version for text box
var fversion = FileVersionInfo.GetVersionInfo(filename);
version = fversion.FileVersion;
//get date created
DateTime fdate = File.GetCreationTime(filename);
date = fdate.ToString();
//Display Folder Contents
showzip(filename);
UpdateContents test = new UpdateContents(rootfile, true);
UpdateContents directory = test.CreateDirectory(rootfile);
}
}
在我的XAML代码中,我只有TreeViewObject。以下是xaml的快照。我知道我需要将Hierarchialdata添加到xaml但是作为mvvm的新手,我不知道如何使用它。
<DockPanel LastChildFill="True" Grid.Row="4">
<TreeView DockPanel.Dock="Left" Margin="5,0,5,5" x:Name="foldersItem" ItemsSource="{Binding foldersItem}" >
</TreeView>
</DockPanel>
我只需要在正确的方向发送,这似乎是我的模型是建立正确的树结构,但我不知道如何与MVVM显示它!该代码现在仅解压缩文件夹。
好文章[MVVM(http://www.c-sharpcorner.com/UploadFile/raj1979/simple-mvvm-pattern-in- WPF /)。最重要的部分 - “INotifyPropertyChanged”。另外,你的绑定现在是错误的。 – cdmnk 2014-08-29 23:01:27