【问题标题】:How to expand one node in Silverlight toolkit treeview using MVVM?如何使用 MVVM 在 Silverlight 工具包树视图中展开一个节点?
【发布时间】:2011-09-15 19:04:47
【问题描述】:

如何使用 MVVM 在树视图中展开节点?

我有一个 x 级树视图,我创建了自己的类来将它绑定到 TreeView 控件。

当我创建TreeView 列表时,我确实设法将IsSelected 属性设置为true。 所以我只需要将我的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");
            }
        }
    }
}

我用IsSelectedIsExpanded 尝试过:

<controls:TreeView.ItemContainerStyle>
    <Style TargetType="controls:TreeViewItem">
        <Setter Property="IsSelected" Value="{Binding IsSelected}" />
    </Style>
</controls:TreeView.ItemContainerStyle>

但它返回,IsSelectedIsExpanded 是只读的(这在 WPF 中有效)。

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

【问题讨论】:

    标签: silverlight xaml treeview mvvm-light treeviewitem


    【解决方案1】:

    很遗憾,在 Silverlight 4 中无法在样式设置器上设置绑定。

    设置 IsExpanded 的一种方法是在 TreeViewItem 的控件模板中设置 ToggleButton 上的绑定,这是无可否认的。如果你去http://msdn.microsoft.com/en-us/library/dd728671(v=vs.95).aspx你可以得到TreeViewItem的默认控件模板。您可以复制此内容并替换以下内容: 和

    【讨论】:

    • Silverlight 5 将带有样式设置器,我希望这能解决我的问题,现在我只使用转换器并在具有 IsSelected 的节点上设置彩色背景并展开整个树视图,用户然后必须找到节点...
    猜你喜欢
    • 1970-01-01
    • 2011-07-25
    • 2015-09-02
    • 2023-04-06
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2013-01-13
    • 2011-01-12
    相关资源
    最近更新 更多