0
更新Simplifying the WPF TreeView ...を参照してください。このTreeViewとHierarchicalデータバインドで何が問題になっていますか?
- ベースAssemblyA中(抽象)クラス
Folder
- サブクラスAssemblyBで
Folder
S:下からBuildFolder
、Solution
、Project
AssemblyCでツリービューは、階層フォルダにバインドしようとしている - 構造
私はビューモデルを持っています3230はBuildItemVM
をカプセル化します。 BuildItemVM
反復しFolder
秒の入れ子構造:大丈夫...
#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のマシン上で見つけた、多くの異なるものを試してみた:次のように
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
です。ここで私は、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
私はそうではありません、私はそうではありません;) –