我想创建一个WPF应用程序,并希望就最合适的方法提供一些建议.
我想创建一个RSS阅读器,在添加新的RSS条目时自动刷新.问题是我不想使用传统控件(listbox/listview)来显示数据.我希望Feed项在屏幕上随机出现在面板中.这些面板由几个文本块组成.每个面板显示一个Feed项.
它看起来像这样: 概念
这提出了几个问题:
1:完全从代码生成面板,还是使用自定义控件?
如上所述,我会像面板一样建模.此类手动将所有控件添加到窗体,并将面板放在窗体上的随机位置.添加新的RSS条目时,将实例化此类的实例并将rss信息作为参数传递.
另一方面,为此创建一个可能更好UserControl.是否可以通过代码轻松创建此UserControl并将其传递给构造函数中的参数?
2:当在线添加新RSS条目时,我的数据/面板是否可以自动更新?
现在我会每隔(x)秒刷新一次,并检查一组面板是否必须创建一个新面板.如果是这样,请创建一个新面板并将其随机放在表单上.
有没有更好的方法呢?我可以使用本地ObservableCollection数据绑定,当集合发生变化时自动更新控件(列表框等),这也可以通过RSS源等在线源完成吗?
最理想的方式是在添加新的RSS条目时通知我的应用程序,下载最后一个条目并创建一个新的Panel(槽代码或通过UserControl)
如果这很难完成,我将使用传统的刷新方法.
3:我必须使用DependencyObject/DependencyProperty吗?
我知道DependencyObject并DependencyProperty公开了一些强大的功能UserControls,但我真的不知道如何使用它们.它们是否适用于此类应用?
4:我必须使用WCF(Windows Communication Foundation)吗?
我对高级数据绑定,DependencyObjects和UserControls等"高级"WPF的使用并不熟悉,但我喜欢学习!
您应该使用 WPF 列表视图(或类似的;不确定到底是哪个控件),并将其主题化以匹配您所需的“面板”想法。这是 WPF 的强大优势之一。然后您就可以获得内置控件的所有好处,并具有您想要的任何外观。
绑定到ObservableCollection; 如何更新可观察的集合是你的事。我认为 RSS 的规范中没有“推送通知”部分,因此轮询是通常完成这些事情的方式。但最终这并不重要;这部分代码与 WPF 完全分离,因此只要它更新ObservableCollection,就可以了。
对于任何类型的具有数据绑定的 WPF 应用程序,通常需要使用DependencyObject/或。值得学习它们,然后也许学习一个为您抽象它们的框架。DependencyPropertyINotifyPropertyChanged
不; WCF 与 WPF 无关。您可以使用任何技术与您喜欢的服务器进行通信。
| 归档时间: |
|
| 查看次数: |
1215 次 |
| 最近记录: |