c# - 开发 WPF 应用程序的最佳方法

标签 c# wpf

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .




9年前关闭。




我想创建一个 WPF 应用程序,并想就最合适的方法提供一些建议。

我想创建一个 RSS 阅读器,在添加新的 RSS 条目时自动刷新。问题是我不想使用传统控件(列表框/ ListView )来显示数据。我希望提要项目随机出现在屏幕上的面板中。这些面板由几个文本 block 组成。每个面板显示一个提要项目。

它看起来像这样:
Concept

这提出了几个问题:

1:完全从代码生成面板,还是使用自定义控件?

我会像上面描述的那样为一个面板建模一个类。此类手动将所有控件添加到表单并将面板放置在表单上的随机位置。添加新的 RSS 条目时,将实例化此类的一个实例并将 rss 信息作为参数传递。

另一方面,创建 UserControl 可能会更好。为了这。通过代码创建这个 UserControl 并在构造函数中传递参数是否容易?

2:当在线添加新的RSS条目时,我的数据/面板可以自动更新吗?

现在,我将每 (x) 秒刷新一次所有内容,并检查一组面板是否必须创建一个新面板。如果是这样,请创建一个新面板并将其随机放置在表单上。

有没有更好的方法来做到这一点?我可以使用本地 ObservableCollection当集合更改时,数据绑定(bind)会自动更新控件(列表框等),这也可以通过 RSS 提要等在线资源来完成吗?

最理想的方式是在添加新的 RSS 条目时通知我的应用程序,下载最后一个条目并创建一个新面板(通过代码或通过用户控件)

如果这很难完成,我将使用传统的刷新方法。

3:我必须使用 DependencyObject/DependencyProperty 吗?

我知道DependencyObject & DependencyPropertyUserControls 公开一些强大的功能,但我真的不知道如何使用它们。它们对于这种应用程序是必要的吗?

4:我必须使用WCF(Windows Communication Foundation)吗?

我对高级数据绑定(bind)、DependencyObjects 和 UserControls 之类的“高级”WPF 东西并没有真正的经验,但我喜欢学习!

最佳答案

我建议首先研究使用 MVVM 设计模式,然后使用 MVVM 框架。其次,您可以使用 ItemsControl 并使用 Canvas 作为 ItemsPanel 类型来实现此效果,然后您可以使用自定义 ItemTemplate,它使用 UserControl 呈现每个数据对象。

用户控件将有一个依赖属性,即数据项,您可以在项模板声明中绑定(bind)它。

您可以有一个模型来模拟每个 RSS 条目 (RSSEntry),也可以有一个 RSSEntryViewModel,它在 Canvas 上添加 x 和 y 坐标。

然后,您的屏幕 View 模型将具有 RSSViewModel 的 ObservableCollection,您可以添加/删除等,并且 UI 将自动更新。

如果您不想,则不需要服务层,但只要您的 View 模型通过抽象检索条目,将来应该很容易重构。

关于c# - 开发 WPF 应用程序的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6628310/

相关文章:

C# XMLDocument 到 DataTable?

c# - CollectionViewSource,如何过​​滤数据?

c# - 为什么 DbConnection.OpenAsync(CancellationToken) 的默认实现是同步的?

wpf - 运行时如何处理 XAML 命名空间?

c# - wpf:如何编辑可能取消的选定项目?

C# WPF 文件保存遇到异常

c# - 报告(免费 || 开源)Winforms 中 Crystal Reports 的替代品

c# - IADsLargeInteger 的命名空间

.net - 通过拖放 (WPF) 显示提示文本

wpf - 如何将样式触发器应用于 WPF 中的数据模板