如何使用MVVM扩展Silverlight toolkit treeview中的一个节点?
如何使用MVVM扩展树视图中的节点 我有一个x级别的treeview,我创建了自己的类将其绑定到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
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>