Обновление см. Simplifying the WPF TreeView ... для понимания этой реализации.Что не так с этим связыванием TreeView и Иерархических данных?
Снизу:
- основы (реферат) класс
Folder
в AssemblyA - подкласс
Folder
s в AssemblyB:BuildFolder
,Solution
,Project
- TreeView в AssemblyC пытается привязать к иерархической папке Структура
У меня есть модель модели ProjectExplorerVM
, который инкапсулирует BuildItemVM
. BuildItemVM
итерацию вложенная структура Folder
с:
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<BuildItemVM> Folders {
get { return folders; }
}
#region constructor
public BuildItemVM(Build Build) : this(Build.RootFolder, null) {
Name = Build.Name;
}
private BuildItemVM(Folder childFolder, BuildItemVM parentFolder) {
folderItem = childFolder;
parentItem = parentFolder;
Name = folderItem.Name;
folders = new ObservableCollection<BuildItemVM>(childFolder.Folders
.Select(f => new BuildItemVM(f, this)));
folders.CollectionChanged += FoldersCollectionChanged;
}
#endregion
ProjectExplorerVM
выглядит следующим образом:
#region properties
public event PropertyChangedEventHandler PropertyChanged;
public ReadOnlyCollection<BuildItemVM> RootItems {
get;
private set;
}
#endregion
#region constructor
public ProjectExplorerVM(Build BuildProject) {
build = BuildProject;
buildItemVM = new BuildItemVM(build);
buildItemVM.Folders.CollectionChanged += FoldersCollectionChanged;
RootItems = new ReadOnlyCollection<BuildItemVM>(new BuildItemVM[] { buildItemVM });
}
#endregion
... хорошо, так что я пробовал много разных вещей, которые я нашел на машине Google , Вот что у меня есть для моих попыток привязки в XAML:
<TreeView Name="BuildTree"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<TreeView.Resources>
<build:BuildFolder x:Key="FolderList"/>
<HierarchicalDataTemplate DataType="{x:Type build:BuildFolder}"
ItemsSource="{Binding Path=Folders}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type build:Project}"
ItemsSource="{Binding Path=Folders}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type build:Solution}"
ItemsSource="{Binding Path=Folders}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeViewItem ItemsSource="{Binding Source={StaticResource FolderList}}"/>
</TreeView>
В элементе управления TreeView не отображаются узлы. Что не так с моей привязкой?
В чем проблема? –
Простой комментарий привлечет мое внимание ... не требовал пониженного голосования. :) – IAbstract
Не был ли я, я не это имею в виду;) –