SOにはこのタイプの質問がたくさんありますが、すべて答えられているので、すぐに新しい質問を作成することにしました。タイトルはかなり自明なので、ここに問題があります。ツリー表示:
<TreeView>
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
<Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.Resources>
</TreeView>
HierarchicalDataTemplate:
var labelFactory = new FrameworkElementFactory(typeof(TextBlock));
var template = new HierarchicalDataTemplate(typeof(Node)) { ItemsSource = new Binding("Children") };
labelFactory.SetBinding(TextBlock.TextProperty, new Binding("Text"));
template.VisualTree = labelFactory;
treeView.ItemTemplate = template;
私がバインドしているタイプ:
public class Node
{
public List<Node> Children { get; set; }
public Node Parent { get; set; }
public bool IsSelected { get; set; }
public bool IsExpanded { get; set; }
}
実際のバインディング、階層を適切に表示するために必要な空白のルート:
var hierarchy = Helpers.GetHierarchy();
var rootNode = new Node();
rootNode.Children.Add(hierarchy);
GVSObjectStructureTreeView.ItemsSource = rootNode.Children;
プログラムで特定のアイテムを選択/拡張する必要がありますが、
var itemToSelect = FindTreeViewItem(treeView.ItemsSource as List<Node>, elementId);
itemToSelect.IsSelected = true;
何も起こりません。拡張についても同じです。問題はバインディングにあると思いますが、理解できません。助けてくれてありがとう。