我想创建一个RSS阅读器,当新的RSS条目添加时自动刷新。问题在于,我不想使用传统的控件(listbox / listview)来显示数据。我希望这些feed项目随机出现在屏幕上的面板中。这些面板由几个文本块组成,每个面板显示一个feed项目。
它的外观类似于这样:Concept 这引发了几个问题:
1. 完全从代码生成面板,还是使用自定义控件? 我会像上面描述的那样模拟一个类作为面板。该类手动向窗体添加所有控件,并将面板放置在窗体的随机位置。当添加新的RSS条目时,该类的一个实例被实例化,并将rss信息作为参数传递。
另一方面,创建一个UserControl可能更好。是否可以通过代码轻松创建此UserControl并将其传递给构造函数中的参数?
2. 当在线添加新的RSS条目时,我的数据/面板是否可以自动更新? 现在,我每(x)秒刷新一次所有内容,并针对面板集合检查是否需要创建新面板。如果是,则创建一个新面板并将其随机放置在窗体上。
有没有更好的方法?我可以使用本地ObservableCollection进行数据绑定,当集合发生变化时,它会自动更新控件(listbox等),那么在线源如RSS feed也可以这样做吗?
最理想的方式是,当添加新的RSS条目时,我的应用程序得到通知,下载最后一个条目并创建一个新面板(通过代码或UserControl)。
如果这很难实现,我将使用传统的刷新方法。
3. 我是否必须使用DependencyObject / DependencyProperty? 我知道DependencyObject和DependencyProperty为UserControls公开了一些强大的功能,但我不太知道如何使用它们。对于这种应用程序,它们是必需的吗?
4. 我是否必须使用WCF(Windows Communication Foundation)?
我对高级WPF内容(如高级数据绑定,DependencyObjects和UserControls)并不熟悉,但我很乐意学习!