- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,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
& DependencyProperty
为 UserControls
公开一些强大的功能,但我真的不知道如何使用它们。它们对于这种应用程序是必要的吗?
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/
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!