Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >UWP TreeView数据绑定和反映更改

UWP TreeView数据绑定和反映更改
EN

Stack Overflow用户
提问于 2019-06-03 13:02:53
回答 1查看 132关注 0票数 0

UWP TreeView是否通过从VM拖放到其关联的ItemsSource来反映项目的变化?例如,我将TreeView与VM ObservableCollection列表相关联。当我通过从VM执行命令来添加一些项,并用新项填充该集合时,它们确实显示在TreeView UI中。但是,如果我在TreeView内部拖放项目,基础列表不会改变吗?我做错了什么?TreeView是否应该根据我的操作更新和观察集合?

下面是我的虚拟机:

代码语言:javascript
运行
AI代码解释
复制
public class MySampleViewModel : MyBase 
{
    public ObservableCollection<FolderInfo> storageFolders { get; set; } = new ObservableCollection<FolderInfo>();

    public ICommand MyCommand { get; }

    public ICommand ChangeCommand { get; }

    public MySampleViewModel()
    {
        AddFilesFolders();
    }

    private void AddFilesFolders()
    {
        FolderInfo ff1 = new FolderInfo();
        ff1.FolderName = "Folder " + DateTime.Now.ToString();
        ff1.IsFolder = true;
        ff1.subFolders = new ObservableCollection<FolderInfo>();

        storageFolders.Add(ff1);

        FolderInfo ffkeko = new FolderInfo();
        ffkeko.FolderName = "subitem" + DateTime.Now.ToString();
        ffkeko.subFolders = new ObservableCollection<FolderInfo>();

        ff1.subFolders.Add(ffkeko);

        FolderInfo ff = new FolderInfo();
        ff.FolderName = "servername " + DateTime.Now.ToString();
        ff.subFolders = new ObservableCollection<FolderInfo>();

        storageFolders.Add(ff);
    }
}

public class MyBase : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged([CallerMemberName]string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

public class FolderInfo : MyBase
{
    private string _FolderName;
    public string FolderName
    {
        get { return _FolderName; }
        set
        {
            if (_FolderName != value)
            {
                _FolderName = value;
                OnPropertyChanged("FolderName");
            }
        }
    }

    private bool _IsFolder;
    public bool IsFolder
    {
        get { return _IsFolder; }
        set
        {
            if (_IsFolder != value)
            {
                _IsFolder = value;
                OnPropertyChanged("IsFolder");
            }
        }
    }

    public ObservableCollection<FolderInfo> subFolders { get; set; } = new ObservableCollection<FolderInfo>();

    public override string ToString()
    {
        return FolderName;
    }
}

下面是我针对TreeView的XAML:

代码语言:javascript
运行
AI代码解释
复制
<localdata:MyTreeView 
x:Name="treeview" Grid.Row="2" ItemsSource="{Binding storageFolders,Mode=OneWay}" 
Style="{StaticResource TreeViewStyle1}"
/>
EN

回答 1

Stack Overflow用户

发布于 2019-06-03 15:05:49

问题在于,当发生更改时,您实际上是将一个新的ObservableCollection<FolderInfo>实例分配给subFolders属性,但数据绑定被绑定到以前的实例,因此它不会观察到此更改。这个问题有两种解决方案:

1)更换实例并引发PropertyChanged事件:

代码语言:javascript
运行
AI代码解释
复制
private ObservableCollection<FolderInfo> _subFolders = new ObservableCollection<FolderInfo>();
public ObservableCollection<FolderInfo> subFolders
{
   get => _subFolders;
   set
   {
      _subFolders = value;
      OnPropertyChanged();
   }
}

2)不分配新实例,清空原实例,只添加新项:

因此,不是:

代码语言:javascript
运行
AI代码解释
复制
ff.subFolders = new ObservableCollection<FolderInfo>();
ff.subFolders.Add(something);

您将执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
ff.subFolders.Clear();
ff.subFolders.Add(something);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56427988

复制
相关文章
运维所需技能体系
产品研发有自己的生命周期: 设计阶段---开发阶段---测试阶段---部署阶段---线上运行阶段---下线或者回滚阶段。
互联网老辛
2018/12/06
9220
python生成项目所需依赖文件
在开发或者在github上clone python项目时,我们经常能看到他们工程的根目录下有一个requirements.txt文件,并且在Readme中介绍使用前需要运行一些命令 这个时什么意思呢? 开发者希望我们能快速配置项目所需要的环境,所以我们需要这个很重要的文件
earthchen
2020/09/24
8140
软件工程 – 专业所需工具
非常好用的开源C/C++ IDE,与mingw搭配使用。替代vc6.0的免费解决方案。
ApacheCN_飞龙
2019/02/15
1.6K0
IOS应用提交所需的ICON
如果提交的ipa包中,未包含必要的Icon就会收到类似的通知,为什么偏偏是Icon-76呢?
meteoric
2018/11/19
8690
mall学习所需知识点
《IntelliJ-IDEA-Tutorial》:https://github.com/judasn/IntelliJ-IDEA-Tutorial
macrozheng
2019/07/22
4990
怎样快速搜索自己所需的资料?
摘要:我不敢保证现在100%的大学生不会使用互联网快速搜索自己所需的资料,但我绝对敢保证有70%~90%大学生不会使用此方法进行快速搜索自己所需的资料。本文以百度为例,分享三个重要技巧。 一、关键词:
用户1756920
2018/06/20
1.6K0
Eclipse中执行Hbase所需jar包
Eclipse中执行Hbase程序需要导入的jar包如下: 1 Hadoop全部jar包 2 Hbase部分jar包     Hbasejar包不能多也不能少,多了会冲突,少了会提醒找不到相应类,Hb
闵开慧
2018/03/30
1.5K0
Eclipse中执行Hbase所需jar包
ios上传appStore所需图片各种尺寸
主要尺寸为(以像素为单位):40 , 60 ,58,87,80,120,180,app store上显示的icon图标尺寸:1024
honey缘木鱼
2018/08/10
5.1K0
ios上传appStore所需图片各种尺寸
JNI所需的C语言知识小结
介绍 作为Android开发人员,会java是必须的,但是一般从事android业务逻辑开发的对C/C++的了解估计仅限于大学里不走心的课程。。。所以参考视频和资料小结一下JNI所需的c语言知识~ 基本数据类型 数据类型 boolean byte char short int long double float void signed unsigned java 1 1 2 2 4 8 8 4 无 无 C 无 无 1 2 4 4 8 4 有符号 无符号 sizeof()函数是用来测量某个类型所占的字节
用户1665735
2018/06/20
1.2K0
软件测试所需要掌握的技能
1.在测试中最重要的文档,他是测试工作的核心,是一组在测试时输入输出的标准,是软件需求的具体对照。编写测试用例,是测试人员的基本功,真正能写好的人并不多。
用户7880705
2020/12/28
1K0
【技能】数据科学家所需技能
小编邀请您,先思考: 1 您认为数据科学家需要具备哪些技能? 2 您擅长那些技能? 数据科学家所需具体技能,罗列如下: 1 数据分析技能 数据清洗 运用合适的统计知识和方法来分析数据 运用机器学习算
陆勤_数据人网
2018/02/28
7250
【技能】数据科学家所需技能
gsea或者gsva所需要的gmt文件
不得不说,数据资源真心丰富啊:The 32880 gene sets in the Molecular Signatures Database (MSigDB) are divided into 9 major collections, and several sub-collections.
生信技能树
2022/04/15
3.2K0
gsea或者gsva所需要的gmt文件
ChatGPT 的 AskYourPDF 插件所需链接如何获取?
目前 ChatGPT 主要有两款 PDF 对话插件,一个是 AskYourPDF 一个是 ChatWithPDF(需 ChatGPT Plus),他们都可以实现给一个公共的PDF 链接,然后进行持续对话,对读论文,阅读 PDF 格式的文档非常有用。
明明如月学长
2023/05/22
3.6K0
ChatGPT 的 AskYourPDF 插件所需链接如何获取?
高效编程所需要做的那点事
聊聊如果才能高效编程 计划(Plan) 所谓Plan,其实就是对应于编程中的设计阶段,当然,这里的Plan并不像设计那样重量级。它要求我们程序员在正式编程前至少要考虑一下下面的问题: 你这个程序,工具或是项目的目的,究竟是用来干什么的。你只有知道做什么,要达到什么样的目的 你这个程序,工具或是项目的目的,究竟是用来干什么的。你只有知道做什么,要达到什么样的目的,你才能做得对,做得好。 需要有什么样的功能。需要你给出来个功能列表。这样可以保证我们不会遗露了什么。准备好一些技术难题的前期调查
码神联盟
2018/04/02
5100
车载网络: OMNet++所需的组件支持
安装过程详见我的另两篇博客:Ubuntu: 安装 OMNeT++ 仿真工具、车载网络: OMNeT++安装CAN协议 。
JNingWei
2018/09/27
1.1K0
【Struts】配置Struts所需类库详细解析
在 Struts框架配置详情 中,谈到了使用Struts所必须的Jar文件。这里对使用到的Jar文件进行详细解析。
陈树义
2022/04/29
2910
【Struts】配置Struts所需类库详细解析
你所需要掌握的问题排查知识
由于业务应用 bug(本身或引入第三方库)、环境原因、硬件问题等原因,线上服务出现故障 / 问题几乎不可避免。例如,常见的现象包括请求超时、用户明显感受到系统发生卡顿等等。
测试开发技术
2020/01/17
1.4K0
你所需要掌握的问题排查知识
SSM整合所需的maven配置文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x
说故事的五公子
2019/10/24
6750
点击加载更多

相似问题

缺少所需参数

14

Web所需参数

53

缺少所需参数

22

缺少所需参数

11

所需隐含参数

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档