以编程方式向资源字典添加或删除项目

3
我刚接触wpf,计划使用listbox生成最近打开或关闭的文件条目。每次打开文件时,将其永久添加到类型为listbox item的资源字典中。
另外,在listbox项旁边有一个按钮可以删除链接。
这可行吗?
2个回答

6

ResourceDictionary是一个IDictionary。您可以使用indexer添加/覆盖项目。

myResourceDictionary["somekey"] = someObject;

您还可以使用Add()Remove()方法。

至于您的情况,我更喜欢使用ObservableCollection,并将您的列表框绑定到它上面。


绑定到ObservableCollection上加1分:毕竟这是WPF的方式。 - stijn
我们可以向声明为具有设置源属性的合并字典的ResourceDictionary中添加项目吗? - Grigory

0

这是完全可能的,除了bitbonk的答案之外,我想说:

你可能不想使用填充ListBoxItems的ObservableCollection。ListBoxItem是WPF用于渲染的类,通常情况下不会自己创建这些类。如果您将数据源设置为(例如)FileInfo对象的集合,则可以使用数据模板使列表中的项目显示为您希望的任何方式。这也有一个好处,就是您不必编写代码将数据对象转换为仅用于显示目的的单独类。

(您可能会使用自己的数据/模型类型而不是FileInfo,但我不知道足够关于您的解决方案以建议一种。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接