1
我對MVVM和WPF比較陌生。我試圖填補目錄的TreeView控件,它的文件/子目錄MVVM中Treeview的HierarchicalDataTemplate
(實際上,我解開一個壓縮文件中的內容),沿着這條SO question後,我有下面的類以下:
namespace IFR_Full.Model
{
public class Item
{
public string Name { get; set; }
public string Path { get; set; }
}
public class FileItem : Item
{
}
public class DirectoryItem : Item
{
public List<Item> Items { get; set; }
public DirectoryItem()
{
Items = new List<Item>();
}
}
public class TVItemProvider
{
public List<Item> GetItems(string path)
{
var items = new List<Item>();
var dirInfo = new DirectoryInfo(path);
foreach (var directory in dirInfo.GetDirectories())
{
var item = new DirectoryItem
{
Name = directory.Name,
Path = directory.FullName,
Items = GetItems(directory.FullName)
};
items.Add(item);
}
foreach (var file in dirInfo.GetFiles())
{
var item = new FileItem
{
Name = file.Name,
Path = file.FullName
};
items.Add(item);
}
return items;
}
}
}
在我的ViewModel類我有這些屬性:
TVItemProvider TVIP = new TVItemProvider();
private List<Item> _tvitems;
public List<Item> TVItems
{
get { return _tvitems; }
}
這是在此方法創建:
private void LoadIDMLTreeView(string path)
{
_tvitems = TVIP.GetItems(path);
}
設置我的主窗口的像這樣的標題和的DataContext:
...
xmlns:ViewModel="clr-namespace:IFR_Full"
xmlns:Model ="clr-namespace:IFR_Full.Model"
...
<Window.DataContext>
<ViewModel:ExcelImportViewModel/>
</Window.DataContext>
,並設置我的樹視圖的XAML代碼:
<TreeView ItemsSource="{Binding}" Name="IDMLView" Margin="10,171.74,10,8" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type Model:DirectoryItem}" ItemsSource="{Binding Path=TVItems}">
<TextBlock Text="{Binding Path=Name}" ToolTip="{Binding Path=Path}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type Model:FileItem}">
<TextBlock Text="{Binding Path=Name}" ToolTip="{Binding Path=Path}" />
</DataTemplate>
</TreeView.Resources>
</TreeView>
當我在調試模式下運行程序,我可以看到該TVItems包含適當的項目(目錄和文件),但我的TreeView控件是空白的。
我想這個問題是與綁定?
當我做出這個改變樹形視圖只與頂級項目填補。我期待一個樹結構:DirectoryItems有FileItem subs。 – DeeDub84
我再次更新了我的答案 – HichemSeeSharp
優秀HichemC!這工作...現在我需要研究答案,以瞭解你做了什麼! – DeeDub84