【问题标题】:Get selected nodes from treeview UWP从树视图 UWP 中获取选定的节点
【发布时间】:2020-01-31 09:56:16
【问题描述】:

我正在开发 UWP 应用程序,但我正在为树视图复选框而苦苦挣扎。 我需要知道哪些节点勾选了复选框。

我尝试过使用

mytreeview.SelectedNodes 

但它总是返回 null。这是我的treeview 我也尝试过使用

<TreeViewItem IsSelected="{x:Bind IsSelected ,Mode=TwoWay}" ...>

在page.cs中

public bool IsSelected { get; set; } = false;

但是当我选中复选框时它仍然是错误的

【问题讨论】:

    标签: checkbox uwp treeview


    【解决方案1】:

    从树形视图 UWP 中获取选定节点

    请检查此案例replayTreeViewItem 包含IsSelected 属性,我们可以创建具有IsSelected 属性的模型类并绑定它。项目选择后 IsSelected 值将被更改,因此您可以foreach itemsource 然后获取所选项目。

    public class ExplorerItem : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public enum ExplorerItemType { Folder, File };
        public String Name { get; set; }
        public ExplorerItemType Type { get; set; }
        private ObservableCollection<ExplorerItem> m_children;
        public ObservableCollection<ExplorerItem> Children
        {
            get
            {
                if (m_children == null)
                {
                    m_children = new ObservableCollection<ExplorerItem>();
                }
                return m_children;
            }
            set
            {
                m_children = value;
            }
        }
    
        private bool m_isExpanded;
        public bool IsExpanded
        {
            get { return m_isExpanded; }
            set
            {
                if (m_isExpanded != value)
                {
                    m_isExpanded = value;
                    NotifyPropertyChanged("IsExpanded");
                }
            }
        }
    
        private bool m_isSelected;
        public bool IsSelected
        {
            get { return m_isSelected; }
    
            set
            {
                if (m_isSelected != value)
                {
                    m_isSelected = value;
                    NotifyPropertyChanged("IsSelected");
                }
            }
    
        }
    
        private void NotifyPropertyChanged(String propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
    

    【讨论】:

    • 我已将其添加到我的项目类 link 中,并将 INotifyPropertyChanged 接口添加到该类。但是当我从我的应用程序中检查该复选框时,它不会更改 IsSelected 属性。 link 这在我的 xaml 中有 &lt;TreeViewItem IsSelected="{x:Bind IsSelected ,Mode=TwoWay}"
    • 正如我所说,我已经测试了您的代码示例。这是我的class 但 IsSelected 属性仍然是错误的。在我的 Xaml Treeview 中,我有 IsSelected="{x:Bind IsSelected ,Mode=TwoWay}"
    • 我再次测试代码示例,如果我选择项目IsSelected 将调用set方法,可以与我们分享您的示例,我将根据您的示例进行测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多