Checkbox 从treeview UWP获取所选节点

Checkbox 从treeview UWP获取所选节点,checkbox,uwp,treeview,Checkbox,Uwp,Treeview,我正在开发UWP应用程序,我正在努力使用treeview复选框。 我需要知道哪些节点选中了复选框 我试过使用 mytreeview.SelectedNodes 但它总是返回null。这是我的 我也尝试过使用 <TreeViewItem IsSelected="{x:Bind IsSelected ,Mode=TwoWay}" ...> 但当我选中复选框时,它仍然是false 从treeview UWP获取所选节点 请检查此案例,TreeViewItem包含IsSelected属

我正在开发UWP应用程序,我正在努力使用treeview复选框。 我需要知道哪些节点选中了复选框

我试过使用

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

<TreeViewItem IsSelected="{x:Bind IsSelected ,Mode=TwoWay}" ...>
但当我选中复选框时,它仍然是false

从treeview UWP获取所选节点

请检查此案例,
TreeViewItem
包含
IsSelected
属性,我们可以使用
IsSelected
属性创建模型类并绑定它。选中项目后,IsSelected值将被更改,因此您可以foreach项目源,然后获取所选项目

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));
        }
    }
}
公共类ExplorerItem:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
公共枚举ExplorerItemType{文件夹,文件};
公共字符串名称{get;set;}
public ExplorerItemType类型{get;set;}
私人可观察收集m_儿童;
公众观察收集儿童
{
得到
{
if(m_children==null)
{
m_children=新的可观察集合();
}
返回m_儿童;
}
设置
{
m_子女=价值;
}
}
私人住宅已扩展;
公共图书馆被扩展了
{
获取{return m_isExpanded;}
设置
{
如果(m_isExpanded!=值)
{
m_i扩展=值;
NotifyPropertyChanged(“iExpanded”);
}
}
}
私人布尔穆伊当选;
公选学校
{
获取{return m_isSelected;}
设置
{
如果(m_isSelected!=值)
{
m_isSelected=值;
NotifyPropertyChanged(“IsSelected”);
}
}
}
私有void NotifyPropertyChanged(字符串propertyName)
{
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(propertyName));
}
}
}

我已将其添加到我的Item类中,并将INotifyPropertyChanged接口添加到该类中。但当我在应用程序中选中该复选框时,它不会更改IsSelected属性。在我的xaml中,正如我所说,我已经测试了您的代码示例。这是我的,但IsSelected属性仍然是假的。在我的Xaml树视图中,我有
IsSelected=“{x:Bind IsSelected,Mode=TwoWay}”
我再次测试代码样本,如果我选择项
IsSelected
set方法将被调用,可以与我们共享您的样本,我将基于您的样本进行测试。
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));
        }
    }
}