如何使用MVVM扩展Silverlight toolkit treeview中的一个节点?

如何使用MVVM扩展Silverlight toolkit treeview中的一个节点?,silverlight,xaml,treeview,mvvm-light,treeviewitem,Silverlight,Xaml,Treeview,Mvvm Light,Treeviewitem,如何使用MVVM扩展树视图中的节点 我有一个x级别的treeview,我创建了自己的类将其绑定到treeview控件 在创建TreeView列表时,我成功地将IsSelected属性设置为true。 因此,我只需将我的IsSelected值绑定到treevieItemIsSelected属性,但这并不是那么简单 这是我的班级: public class HierarchicalItem : Model { public string Name { get; set; } publ

如何使用MVVM扩展树视图中的节点

我有一个x级别的treeview,我创建了自己的类将其绑定到treeview控件

在创建
TreeView
列表时,我成功地将
IsSelected
属性设置为
true
。 因此,我只需将我的
IsSelected
值绑定到
treevieItem
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
是只读的(这在WPF中有效)


我已经寻找了很多解决方案,但是没有一个对我有效,因为我在列表框中有动态TreeView,并且在每个TreeView中,我必须扩展到具有给定
Id的节点的整个路径。例如,我想展开每个树视图中Id=30的所有节点。

不幸的是,在Silverlight 4中无法在样式设置器上设置绑定

设置IsExpanded的一种方法是在TreeViewItem的控件模板中的ToggleButton上设置绑定,这当然不是很好。如果转到,则可以获取TreeViewItem的默认控件模板。您可以复制此文件并替换以下内容: 具有

Silverlight 5将配备样式设置器,我希望这将解决我的问题,因为现在我只需使用转换器,在已选择的节点上设置彩色背景,并展开整个树视图,然后用户必须找到节点。。。
<controls:TreeView.ItemContainerStyle>
    <Style TargetType="controls:TreeViewItem">
        <Setter Property="IsSelected" Value="{Binding IsSelected}" />
    </Style>
</controls:TreeView.ItemContainerStyle>