Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法让Silverlight HierarchicalDataTemplate显示IsolatedStorage文件夹

这是我第一次尝试层次化数据,我遇到了一点问题。

在Silverlight4中,我正在尝试获取要在TreeView中显示的独立存储文件夹的列表。根本不显示任何内容。我的树状视图是完全空白的。我遗漏了什么?我正在获取数据,它是正确的。

任何帮助都将不胜感激。

XAML

代码语言:javascript
运行
AI代码解释
复制
 <sdk:TreeView x:Name="FolderTreeView" Grid.Column="0" Margin="0,0,3,0" ItemsSource="{Binding _Folders}">
            <sdk:TreeView.ItemTemplate>
                <sdk:HierarchicalDataTemplate ItemsSource="{Binding Path=Folders}">
                    <TextBlock Margin="0" Text="{Binding Name, Mode=OneWay}"/>
                </sdk:HierarchicalDataTemplate>
            </sdk:TreeView.ItemTemplate>
        </sdk:TreeView>

政务司司长

代码语言:javascript
运行
AI代码解释
复制
internal class Folder
{
    public Folder() { Folders = new List<Folder>(); }
    public string Name { get; set; }
    public List<Folder> Folders { get; set; }
}

private List<Folder>  _Folders = new List<Folder>();
public OpenFileDialog()
{
    InitializeComponent();

    ifs = IsolatedStorageFile.GetUserStoreForApplication();
    var folder = new Folder
    {
        Name = "Root",
        Folders = (from c in ifs.GetDirectoryNames()
            select new Folder
            {
                Name = c,
                Folders = LoadFolders(c)
            }).ToList()
    };
    _Folders.Add(folder);
    FolderTreeView.DataContext = new { _Folders };
}

private List<Folder>LoadFolders(string folderName)
{
    if(folderName == null)
        return null;
    return (from c in ifs.GetDirectoryNames(folderName + "\\*.*")
        select new Folder
        {
            Name = c,
            Folders = LoadFolders(c)
        }).ToList();
}

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-04-09 15:56:19

几件事

代码语言:javascript
运行
AI代码解释
复制
<sdk:TreeView x:Name="FolderTreeView" Grid.Column="0" Margin="0,0,3,0" 
              ItemsSource="{Binding _Folders}">

您不能绑定到私有成员。

您需要使用ObservableCollections而不是List。绑定管理器有效地侦听由ObservableCollection触发的CollectionChanged事件,并通知绑定的控件。

您需要实现INotifyPropertyChanged并在您的属性设置器中引发PropertyChanged通知。

最后,您是否设置了树视图的DataContext?

另外,在输出调试窗口中查找与绑定相关的错误。

编辑,ok尝试:

代码语言:javascript
运行
AI代码解释
复制
FolderTreeView.DataContext =  this;

并将_Folders包装在属性中

代码语言:javascript
运行
AI代码解释
复制
public ObservableCollection <Folder> Folders
    {
    get
       {
       return _Folders;
       }
    set
       {
       _Folders = value;
       OnPropertyChanged("Folders");
       }
   }

将绑定更改为

代码语言:javascript
运行
AI代码解释
复制
<sdk:TreeView x:Name="FolderTreeView" Grid.Column="0" Margin="0,0,3,0" 
              ItemsSource="{Binding Folders}">

我改变了很多,

代码语言:javascript
运行
AI代码解释
复制
    public class Folder : INotifyPropertyChanged
        {

        public Folder(string folderName) 
            {
            Name = folderName;
            Folders = new ObservableCollection<Folder>();
            var _ifs = IsolatedStorageFile.GetUserStoreForApplication();

            if (folderName != null)
                {
                Folders = new ObservableCollection<Folder>(
                        (from c in _ifs.GetDirectoryNames(folderName + "\\*.*")
                         select new Folder(folderName + "\\" + c)
                   ));
                }
            else
                {
                Folders = new ObservableCollection<Folder>(
                       (from c in _ifs.GetDirectoryNames()
                        select new Folder(folderName + "\\" + c)
                  ));
                }
            }


        public string Name { get; set; }

        private ObservableCollection<Folder> _Folders; 
        public ObservableCollection<Folder> Folders 
            {
            get { return _Folders; }
            set { _Folders = value; OnPropertyChanged("RootFolder"); }
            }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string propertyName)
            {
            if (PropertyChanged != null)
                {
                PropertyChanged(this,
                    new PropertyChangedEventArgs(propertyName));
                }
            }
        #endregion
    }



public partial class OpenFileDialog : UserControl
    {      
    public OpenFileDialog()
        {
        InitializeComponent();

        RootFolder = new Folder (null);
        RootFolders = new ObservableCollection<Folder>();
        RootFolders.Add(RootFolder);

        FolderTreeView.DataContext = this;
        }


    private Folder _RootFolder;
    public Folder RootFolder
        {
        get { return _RootFolder; }
        set { _RootFolder = value; }
        }


    private ObservableCollection<Folder> _RootFolders;
    public ObservableCollection<Folder> RootFolders
        {
        get { return _RootFolders; }
        set { _RootFolders = value; }
        }

    }

xaml

代码语言:javascript
运行
AI代码解释
复制
 <sdk:TreeView x:Name="FolderTreeView"  Margin="0,0,3,0" ItemsSource="{Binding RootFolders}">
    <sdk:TreeView.ItemTemplate>
        <sdk:HierarchicalDataTemplate ItemsSource="{Binding Path=Folders}">
            <StackPanel>
            <TextBlock Margin="0" Text="{Binding Name, Mode=OneWay}"/>
            </StackPanel>
        </sdk:HierarchicalDataTemplate>
    </sdk:TreeView.ItemTemplate>
</sdk:TreeView>
票数 1
EN

Stack Overflow用户

发布于 2013-04-09 17:47:23

Ok...problem已解决。不过,我不明白为什么。

我将ChildWindow设置为内部作用域,而不是公共作用域,因为我不希望窗口本身在我的Silverlight类库外部被查看。如果有人能回答为什么这会停止分层数据绑定,而不是标准数据绑定,我想知道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15906101

复制
相关文章
如何让nginx显示文件夹目录
vi  /usr/local/nginx/conf/nginx.conf   #编辑配置文件,在server {下面添加以下内容:
似水的流年
2019/12/04
2.5K0
如何让nginx显示文件夹目录
vi /etc/nginx/conf.d/default.conf
似水的流年
2018/01/14
2.3K0
如何让nginx显示文件夹目录
如何让nginx显示文件夹目录
1. 如何让nginx显示文件夹目录 vi /etc/nginx/conf.d/default.conf 添加如下内容: location / { root /data/www/file //指定实际目录绝对路径; autoindex on; //开启目录浏览功能; autoindex_exact_size off;
似水的流年
2018/01/18
2.5K0
如何让nginx显示文件夹目录
IsolatedStorage的使用方法
Windows Phone 7使用了Silverlight,而在Silverlight中可以使用IsolatedStorage来做独立存储,那么在Windows Phone 7下也可以使用IsolatedStorage。不同程序使用IsolatedStorage存储的数据相互独立,也就是说A程序不能访问B程序通过IsolatedStorage存储的信息,安全性非常高,程序的IsolatedStorage默认为2G大小。下面简单的说下用法:
徐大嘴
2019/03/21
9510
Silverlight 中的 CoreCLR
Silverlight 2  包含一个 CLR,但并不是其他 .NET 应用程序和程序集使用的 CLR. Silverlight CLR 也称为 CoreCLR,在设计时充分考虑了不同用途。CoreCLR 专为跨平台互操作性而设计,可与 CLR 同时运行并支持不同的安全模型以及不同版本的基础类库。 CoreCLR 是 Silverlight 使用的虚拟机。它类似于为 .NET Framework 2.0 及更高版本提供强大功能的 CLR,也包含相似的类型加载和垃圾收集 (GC) 系统。 CoreCLR
张善友
2018/01/31
5160
Silverlight Telerik控件学习:TreeView数据绑定并初始化选中状态、PanelBar的Accordion效果、TabPanel、Frame基本使用
实际开发中控件的数据源肯定是动态绑定的,不可能在xaml里写死item项。既然要绑定,就先来几个实体类: 上面是类图,各类的代码如下:  BusinessBaseObject using System
菩提树下的杨过
2018/01/24
1.6K0
Silverlight Telerik控件学习:TreeView数据绑定并初始化选中状态、PanelBar的Accordion效果、TabPanel、Frame基本使用
Silverlight 的 Isolated Storage 学习笔记
Isolated Storage In Silverlight 2 http://msdn.microsoft.com/en-us/magazine/dd458794.aspx
全栈程序员站长
2021/08/05
2580
Silverlight Telerik控件学习:带CheckBox复选框的树形TreeView控件
在web开发中,带checkbox的tree是一个很有用的东东,比如权限选择、分类管理,如果不用sl,单纯用js+css实现是很复杂的,有了SL之后,就变得很轻松了 解决方案一: 利用Silvelright ToolKit(微软的开源项目),项目地址http://silverlight.codeplex.com/ 在线演示地址:http://silverlight.net/content/samples/sl4/toolkitcontrolsamples/run/default.html 解决方案二
菩提树下的杨过
2018/01/23
2.2K0
Silverlight Telerik控件学习:带CheckBox复选框的树形TreeView控件
Silverlight 结构分析
Silverlight是微软提供的一种Web前端应用程序开发框架,是微软RIA的主要应用程序开发平台。Silverlight以浏览器的插件方式,提供丰富的多媒体展示功能以及更多交互性的Web前端解决方案。 本文的重点在于探讨Silverlight的整体架构,以及Silverlight应用程序是如何在浏览器中运行的,各个子部分的作用是什么。 1.      整体结构 Silverlight是以浏览器插件方式运行的,在安装完Silverlight后,我们来看一下安装目录:C:\ProgramFiles\Micr
葡萄城控件
2018/01/10
9380
Silverlight 结构分析
cmder 无法显示中文
cmder 默认是不支持中文字符的,可以在 Setting > Startup > Environment 下增加一行语言设置:
zucchiniy
2020/05/22
2.6K0
GitHub无法显示图片
修改Host文件,添加 # GitHub Start 140.82.113.3 github.com 140.82.114.20 gist.github.com 151.101.184.133 assets-cdn.github.com 151.101.184.133 raw.githubusercontent.com 151.101.184.133 gist.githubusercontent.com 151.101.184.133 cloud.githu
SingYi
2022/07/14
1.6K0
GitHub无法显示图片
让Silverlight AutoCompleteBox控件支持多属性筛选
首先我们先建立一个实体类并创建它的集合用于绑定控件的ItemSource属性,这个实体类有两个属性,如下:
yoyofx
2018/09/05
4010
让Silverlight AutoCompleteBox控件支持多属性筛选
出现“内部错误,无法显示”
This page contains the following errors: error on line 2 at column 6: XML declaration allowed only at the start of the document Below is a rendering of the page up to the first error. 提示信息是头部有错误,我登录后台查看我修改过的页面,然后找到home.php我看了十几分钟没有发现那里有错误~~ 莫非头部不能有空格? 去掉试试
苦咖啡
2018/05/07
3.4K0
jira无法正常显示图片
jira安装之后,图片在富文本编辑器内能正常显示,但是在附件内无法显示,如果查看会发现图片的连接是127.0.0.1.
obaby
2023/02/23
2.6K0
jira无法正常显示图片
【WP之一】]独立存储
介绍: 提供一个磁盘存储空间,他是一种虚拟的文件系统,能存储小量的数据;在默认的情况下,它只能存储1MB的文件。根据使用方式及功能的不同,独立存储空间又包含两部分:独立设置存储和独立文件存储。除非卸载应用,否则数据不会消失。 第一是通过库中的键/值对,叫做IsolatedStorageSettings(独立设置存储),第二是通过创建真实的文件和目录,叫做IsolatedStorageFile(独立文件存储)。 独立设置存储: 命名空间为:System.IO.IsolatedStorage;主要涉及Syste
小端
2018/04/16
6740
解决Typecho评论无法显示头像
通用 在config.inc.php最上方添加下方代码 /** 替换Gravatar头像镜像为大白熊头像镜像 **/ define('__TYPECHO_GRAVATAR_PREFIX__', 'https://tx.changrui.xyz/'); A-My主题
大白熊
2021/12/23
2.1K0
解决Typecho评论无法显示头像
WordPress 4.2.1 gravatar头像无法显示
升级wordpress 之后去按照以前的方法找服务器设置,发现找不到了。蛋疼啊,但是最近又有点忙,所以一直没管它,今天搜索了一下发现新的头像服务器函数已经移动到”\WordPress4.2.1\wp-includes\link-template.php”(3604,29): url = sprintf( ‘http://%d.gravatar.com/avatar/%s’, gravatar_server,
obaby
2023/02/23
1.1K0
文件无法保存(文件夹已损坏无法读取怎么办)
要使用EmguCV,首先需要去官网下载安装包(除了下载安装包,还有其他几种方式)。安装完成后,得配置环境变量。这里不再赘述。网上的教程很多。我这里分享一个官网的下载链接:https://sourceforge.net/projects/emgucv/files/emgucv/
全栈程序员站长
2022/07/25
1.7K0
文件无法保存(文件夹已损坏无法读取怎么办)
Discourse 附件无法显示的跟进
这个让我们感觉 Discourse 的系统中应该设置了自动清理程序,在这个自动清理程序中会对认为没有使用的附件或者图片进行清理。
HoneyMoose
2023/09/07
1970
Discourse 附件无法显示的跟进
解决Github显示无法访问
最近GitHub总是访问不了,后来才发现是DNS污染问题,暂时只能修改hosts了
用砖头敲代码
2022/08/30
2.6K0

相似问题

Silverlight 4.0: IsolatedStorage URI

10

Silverlight Treeview内联HierarchicalDataTemplate绑定问题

10

是否可以在silverlight5中显示IsolatedStorage路径

22

用代码在Silverlight中创建HierarchicalDataTemplate

14

Silverlight将图像保存到IsolatedStorage

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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