- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为我面临的是设计问题-我认为这个问题已经被很多人解决了很多次,因为这似乎很普遍。
我将WPF与XAML和简单的MVVM方法结合使用,以供记录。
我的意图是使用WPF中的MVVM设计模式创建TreeView。
我有一个包含两个类的数据模型:场景和角色。每个场景都包含许多角色。
我创建了一个CharacterViewModel,它非常简单(并且运行良好)。自然地,这将环绕现有的Character类。
Scene类让我感到困惑。据我了解,SceneViewModel应该环绕Scene类,就像CharacterViewModel对Character类所做的一样。但是不同之处在于,场景包含角色列表,因此增加了exta的复杂性。
这两个选项似乎如下:
选项1:场景包含角色列表,因此SceneViewModel也将其作为它的一部分。
选项2:场景包含CharacterViewModel的列表,因此SceneViewModel也将其作为它的一部分。
老实说,我不确定该去哪一个。我怀疑这是第二个(而且this教程似乎同意(示例6是我所指的部分的标题)。第一个选项似乎会使事情真的很奇怪(以及为什么还要创建CharacterViewModel?)但是第二个似乎很奇怪,因为在程序的模型部分应该包含什么以及在程序的 View 模型部分应该包含什么,这似乎使人感到困惑。
我希望我已经解释了我的问题,也希望有人可以提供一些帮助。
谢谢。
最佳答案
首先让我谈谈这一声明:
...the SceneViewModel should wrap around the Scene class, just as the CharacterViewModel did for the Character class.
Scene
类中的数据的 View 。该 View 还可能显示
Character
中每个
Scene
的数据。用户可能能够单击
Character
并打开仅针对该
Character
的 View (例如,弹出窗口)。在这种情况下,可能会有单独的 View 模型来表示根 View 和弹出窗口中的
Character
。我倾向于根据 View 的根来命名 View 模型类。对于像您这样的应用程序,我会有类似
SceneViewModel
和
SceneCharacterViewModel
(或
SceneViewModel_Character
或
CharacterInSceneViewModel
-这些名称中的任何一个都表明该类用于在
Character
的 View 中表示
Scene
)。这将使该 View 模型与弹出 View (以
Character
为中心,并被命名为
CharacterViewModel
(甚至是
CharacterDialogViewModel
或
CharacterPopupViewModel
或
CharacterEditorViewModel
)类似。
SceneView
的每个
Character
都有一个按钮。该按钮将显示
Character
的弹出窗口。进一步假设
Character
弹出窗口没有类似的按钮,因为这样它将允许弹出窗口打开另一个弹出窗口(等)。您可能需要使用
ICommand
实现,以便可以将按钮绑定(bind)到命令。
ICommand
实例绝对不在模型中(即使命令可能在模型上调用公共(public)方法)。适当的位置应该在
Character
View 中的
Scene
的 View 模型中(而不是弹出窗口中
Character
的 View 模型中)。对于模型中的每个
Character
,您都需要创建一个引用
Character
的 View 模型并存储其他 View 模型内容(
ICommand
对象)。
Character
的添加/从
Scene
中删除,您需要专门为
Character
View 模型中的
Scene
创建 View 模型。我通常会这样做:
ReadOnlyCollection<SceneCharacterViewModel>
之类的公共(public)属性中。您的 View 将绑定(bind)到该集合。 CharacterAdded
,CharacterRemoved
甚至CharactersUpdated
(这些事件的最后一个将能够使用单个事件传达添加或删除的信息)ObservableCollection
(或ReadOnlyObservableCollection
)也可以在模型中使用,在这种情况下,所有事件都已经可用。缺点是处理这些集合类型的事件并不是最简单的事情。 sceneModel.AddCharacter(newCharacterModel)
之类的方法,则只需在此行之后立即更新 View 模型,而无需任何事件。我经常因为这种方法很简单而开始使用这种方法,但是我几乎总是总是使用前两种技术之一,因为这些技术即使在内部进行更新的情况下,也允许模型通知 View 模型(例如,在内部进行更新)。对定时事件或模型控制的异步操作的响应)。 ItemTemplate
的
ItemsControl
中,而不是为 child 创建单独的
UserControl
,通常会更容易。
关于wpf - WPF MVVM : an issue of organising ViewModels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42566082/
我使用 Angular 种子(带有文件 index-async.html(异步加载依赖项))来启动我的 Web 项目,但我的 Controller 需要进行一些重组。我现在有 3 个充满 Contro
我正在为一个项目制作一个基本的电影在线商店,我希望用户能够按流派选择电影,例如: 全部 恐怖 行动 纪录片 科幻 ... 在数据库中存储电影以匹配此结构的最佳方式是什么。 第一种方式 按类型对电影进行
我正在编写某种模拟程序,其数据以树的形式组织。主要对象是 World,它包含一组方法和一个 City 对象列表。每个 City 对象依次有一堆方法和一个 Population 对象列表。 Popula
例如,我们有两个用于解析简历的类,一个用于解析Excel,另一个用于解析HTML。我的同事们喜欢做的就是将这两个类命名为相同的名称,并将它们放在不同的命名空间中,如下所示: namespace XX.
我认为我面临的是设计问题-我认为这个问题已经被很多人解决了很多次,因为这似乎很普遍。 我将WPF与XAML和简单的MVVM方法结合使用,以供记录。 我的意图是使用WPF中的MVVM设计模式创建Tree
我正在使用 MLA 创作风格。我想打印一份分为不同部分的引用书目。我还想要每个来源的注释。这在 BibLaTeX 中可行吗?我应该手动完成吗? 最佳答案 是的,我认为您可以使用 Biblatex 做到
我正在使用嵌入式 Jetty 9,其中 Jetty 是我的应用程序的一个小角落。我混合了静态内容、servlet 和 jsp。我的 servlet 和 jsp 是我的源代码树的一部分,并进入可执行 j
伙计们,我需要一些帮助来在 iOS 中构建我的多线程。 我在代码中使用 ARC。 所以基本上我需要遵循, 在我的主线程中,nstimer触发一些应该在单独的线程中执行的方法,该线程执行一些计算并将数据
我想做一个组织结构图,但我有一些问题......我使用 JorgChart 插件 ( http://www.webresourcesdepot.com/jorgchart-a-plugin-for-c
首先,让我们同意命名空间应该与文件夹结构相匹配,并且每种语言的工件应该在它自己的文件中。 (参见 Should the folders in a solution match the namespac
我试图通过将模型和 Controller 放在子目录中来更好地组织我的应用程序。我认为只要命名空间正确,它们是否在子目录中都没有关系,但是现在我已经移动了它们,我收到了一个找不到类的错误。 我试过运行
CakePHP 是否可以在子文件夹中组织 Controller (和模型)?谢谢。 最佳答案 它根本没有被弃用。您可以使用 App:build 并指向您的子文件夹来完成此操作。例如,如果您想将所有 T
作为 FINISH 加速器的一部分,我们使用 FIWARE KeyRock 和 Wirecloud。目前我们正在使用 Fiware labs 全局实例进行调查。 我们希望限制我们的系统,以便用户只能查
这看起来可能有一个非常明显的答案,但我没有运气找到它。 如果我在 iPhone 上写入文件(即该应用程序的 NSDocumentDirectory 文件夹),是否有一种简单的方法来获取该文件,以便我可
我想在表单生成器 Controller 中说这个字段属于这个组,然后在 View /主题中将所有 group1 组织到 div1,将 group2 组织到 div2,等等。 我试过类似的方法(创建子表
我正在构建一个 Web 应用程序,需要从我的组织的某些用户的 Outlook 任务中访问任务。据我所知,此功能对于 Microsoft Graph 来说相当新: https://developer.m
在 Angular 1x 中,我能够将服务中的 Web 服务调用分开,如下所示。 angular.module('app.APIServices', []) .factory('API', ['ser
我正在开发一个基于 GitHub 的 Trello 同步机器人:https://github.com/fiatjaf/trello-cardsync我正在处理 coffeescript 文件。我查看了
我想通过添加执行所有适用方法的静态导入的子任务来扩展 eclipse jdt 的“组织导入”命令。目前我们只能通过手动导入每种方法来实现这一点。 我的问题是: 在哪里可以找到“组织导入”命令处理程序?
我想为特定的 scope 全局设置 NPM 注册表与特定的 token 一起使用. 我知道我可以使用: $ npm login --scope=@organisation 我也可以用 : 写一个 ~/
我是一名优秀的程序员,十分优秀!