MVVM を使用してツリービューでノードを展開するにはどうすればよいですか?
私は斧レベルのツリービューを持っており、それを TreeView コントロールにバインドする独自のクラスを作成しました。
リストを作成するときにIsSelected
プロパティを設定することができました。したがって、値をプロパティにバインドするだけで済みますが、それほど単純ではありません...true
TreeView
IsSelected
TreeViewItem
IsSelected
これが私のクラスです:
public class HierarchicalItem : Model
{
public string Name { get; set; }
public int Id { get; set; }
private bool _IsSelected;
public bool IsSelected
{
get { return _IsSelected; }
set
{
if (_IsSelected != value)
{
_IsSelected = value;
RaisePropertyChanged("IsSelected");
}
}
}
private ObservableCollection<HierarchicalItem> _children;
public ObservableCollection<HierarchicalItem> Children
{
get
{
return _children;
}
set
{
if (_children != value)
{
_children = value;
RaisePropertyChanged("Children");
}
}
}
}
IsSelected
私はそれを試しましたIsExpanded
:
<controls:TreeView.ItemContainerStyle>
<Style TargetType="controls:TreeViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</controls:TreeView.ItemContainerStyle>
しかし、それは返され、IsSelected
読み取りIsExpanded
専用です(これはWPFで機能します)。
これについて多くの解決策を検討しましたが、リストボックスに動的なツリービューがあり、各ツリービューで指定されたノードへのパス全体を展開する必要があるため、うまくいきませんId
。たとえば、各ツリービューで Id = 30 を持つすべてのノードを展開したいとします。