问题标签 [caliburn.micro]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5250 浏览

c# - 使用 Caliburn.Micro 将命令绑定到 ListView 内的按钮

我正在尝试创建类似于 MDI 选项卡式界面的东西,因此左侧有一个导航窗格(一个列表框),右侧有一个 ContentPresenter。

我有一个 ShellViewModel,上面有一个名为 AvailAbleScreens 的 BindableCollection,我成功地使用 ListViews DataTemplate 绑定到该列表:

现在的问题是,虽然按钮的名称设置正确,但我无法让命令为我触发。在 MdiViewModel 类上,我对该按钮有以下代码:

所有 Caliburn.Micro 示例都通过 x:Name 属性的约定进行绑定,但是如果我删除 Text="{Binding}" 它会停止工作,所以我怀疑这种数据绑定方式不适用于子模型?

无论如何,Shell 的 ViewModel 目前非常简单:

知道如何使用 Caliburn.Micro 做到这一点吗?Rob Eisenberg 在 Twitter 上向我建议,在进入成熟的 Caliburn 框架之前,我可能想先从 Caliburn.Micro 开始。

0 投票
1 回答
3081 浏览

silverlight - Silverlight、Caliburn、Actions 和 DataGrids

任何人都知道 Caliburn 或 Caliburn Micro 框架示例的良好代码示例,这些示例说明了使用 DataGrid 项的路由操作?

0 投票
1 回答
355 浏览

silverlight - Caliburn.Micro 和 WebServiceResult

我正在为 Caliburn.Micro 寻找此类的正确版本

公共类 WebServiceResult : IResult where T : new()

上面的签名来自完整的 Caliburn 框架中的 ContactManager 示例。它不会直接剪切和粘贴到基于 Micro 的项目中。缺少的类太多,无法直接使用它。想法?或者有人知道替代品吗?

0 投票
2 回答
4511 浏览

c# - WPF DataGrid:使用 MVVM 干净地处理 CanUserAddRows=true

我最近一直在研究 MVVM,在我发现Caliburn.Micro之后,事情变得非常顺利;我仍处于早期学习阶段,但我相信我对 MVVM 基础知识感觉还不错。

不过,我遇到了WPF的问题——这与我在 WinForms 中遇到DataGrid的问题几乎相同DataGridView:你到底是如何CanUserAddRows=true干净地处理网格内项目添加的?

我显然不想DataGrid在我的 ViewModel 中添加特定的 hack,因为理想情况下它应该可以重新用于其他View控件。同时,我希望能够在添加新项时收到通知,以便我可以立即将其持久化。

我将 - 绑定DataGridBindableCollection<FooModel> FooItems一个干净的 MVVM 设计,如果我理解正确,我将能够处理FooItems.CollectionChanged并响应添加/删除事件。但是,DataGrid一旦添加了默认构造的项目,就会触发 Add 事件 - 这显然不是持久化对象的正确时间!

在通过 StackOverflow 进行大量谷歌搜索和挖掘之后,我得到的印象DataGrid是它如何触发 Add/Remove 事件完全迟钝。使用它的人CanUserAddRows=true似乎只在内存集合上工作,其中持久化数据的人似乎使用单独的输入字段 +按钮命令来添加新项目。

我的FooModel实现INotifyPropertyChanged但不是IEditableObject- 据我所知,这不应该是问题,因为 IEO 似乎与属性编辑/撤消有关,而我的问题是何时触发 Add 事件......

那么,您如何干净地处理网格内编辑?

0 投票
2 回答
3504 浏览

c# - Caliburn.Micro 和 Telerik WPF 控件

希望你们一切都好。

我正在使用带有 Telerik 的 WPF 控件的 Caliburn.Micro 来构建选项卡式界面。使用 RadTabControl 我有以下代码;

该选项卡具有正确的标题,但内容为“.../MyViewModel”(省略号替换完整路径)而不是应显示的屏幕。

如果我<telerik:RadTabControl...<TabControl...这个替换所有的作品都按预期工作。

我错过了什么?

0 投票
5 回答
8146 浏览

wpf - 如何在 Caliburn.Micro 中绑定按键手势?

如何让 Caliburn.Micro 将按键手势映射到 ViewModel 上的操作方法?

例如,我想实现一个选项卡式界面,并且我希望我的 ShellViewModel 有一个 NewTab 方法,用户应该能够通过按键盘上的 Ctrl+T 来调用该方法。

我知道完整的 Caliburn 框架支持手势,但是如何使用 Caliburn.Micro 来做到这一点?是否有某种方法可以将操作绑定到 RoutedCommand(因为 RoutedCommands 已经支持输入手势)?或者其他方式来获得手势支持?

0 投票
3 回答
1730 浏览

silverlight - 使用 WCF RIA 和 MVVM 模式验证 UI 上的数据

在 Silverlight 中使用 MVVM 和 RIA 服务来构建和验证数据是否有最佳实践或被广泛接受的方法?

这是我问题的症结所在。假设我有一个 EmployeeView、EmployeeViewModel 和一些 Employee 实体。在常规 RIA 应用程序中,我将在视图上公开该 Employee 实体,并且“免费”获得验证,因为实体实现了 INotifyDataErrorInfo 和 IDataErrorInfo(对吗?)。

现在,如果我想通过 ViewModel 而不是直接通过 Entity 公开一些 Employee 属性,那么它会变得更加复杂。我可以直接公开我需要的位并将它们挂钩到后端的实体中,如下所示:

...但我失去了实体的美味“免费”验证。否则,我可以直接在视图模型中公开实体,就像这样

在这种情况下,视图将直接绑定到 Employee 实体并在其中找到它的属性,如下所示:

使用这种方法,我们得到“免费”验证,但它并不完全是 MVVM 的干净实现。

第三种选择是我自己在虚拟机中实现 INotifyDataErrorInfo 和 IDataErrorInfo ,但这似乎是一个非常多的管道代码,考虑到我使用上述解决方案是多么容易并且有一些稍微不那么“干净”的东西但是见鬼在一天结束时容易得多。

所以我想我的问题是,这些方法中的哪一种适用于哪种情况?我错过了更好的方法吗?

如果它是相关的,我正在查看 Caliburn.Micro MVVM 框架,但我很想看到通用的答案。

0 投票
1 回答
1832 浏览

silverlight - Caliburn.Micro 基于约定的绑定在嵌套视图中不起作用?

我有这个 Caliburn.Micro 示例项目,我正在整理,我在使用嵌套视图/视图模型的基于约定的绑定时遇到了问题。

例如,假设我有一个外壳视图 ShellView,它由作为屏幕导体的 ShellViewModel 支持。

我在绑定到 ActiveItem 的 ShellView 中有一个内容控件(使用 x:Name 约定),并且 ActiveItem 的类型为 EmployeeListViewModel,因此生成的视图是 EmployeeListView。嵌套在此视图中的是一个由EmployeesDetailsViewModel 支持的EmployeeDetailsView,该EmployeeDetailsViewModel 绑定到EmployeeListViewModel 中的选定项。

这很好用,除了在 EmployeeDetailsView 中我无法使用 Caliburn 约定绑定文本框和按钮等内容。这工作正常:

但这些行都不起作用:

文本框文本绑定不是什么大问题,但自动按钮方法连接是 Caliburn.Micro 最酷的功能之一,但它似乎不适用于嵌套视图。

有任何想法吗?

0 投票
1 回答
838 浏览

silverlight - Caliburn 元素约定

在尝试学习 GameLibrary 示例应用程序的源代码时,我看到了这样一行:

查看了 Caliburn 的来源,但无法真正理解元素约定是什么。

有人可以简要描述一下吗?

0 投票
2 回答
1637 浏览

mvvm - 任何与 RoutedCommand 配合得很好的 MVVM 框架?

RoutedCommand 和 RoutedUICommand 对他们有很大帮助。内置对文本和键盘手势的支持。您可以将 RoutedUICommands 集合绑定到菜单的 ItemsSource,它会自动为您创建和绑定菜单项。开箱即用的控件自动支持某些命令(剪切、复制、粘贴)。

然而,每当我使用 MVVM 时,我发现路由命令并不适合,因为重复的样板 XAML 和代码隐藏我必须为每个命令编写。当我在做 MVVM 时,我通常会使用RelayCommand而不是路由命令。这在某些时候是一个足够的解决方法,但它也有缺点——例如,按键手势变得更加复杂

但是在观看了 Rob Eisenberg 的“构建你自己的 MVVM 框架”课程之后,我不再对中继命令及其缺点感到满意。路由命令的唯一问题是重复的样板代码,一旦您将重复代码分解到框架中并应用约定,似乎不再有任何理由不在 MVVM 中使用路由命令。

从技术上讲,这看起来并不难。框架应该只需要绑定到视图的CommandManager.CanExecuteExecuted事件,并应用约定来查找 ViewModel 上的方法和属性——例如,当执行 Cut 命令时,查找 ExecuteCut 方法(和 CanExecuteCut 属性) 在 ViewModel 上。我可以构建自己的 MVVM 框架,让这一切变得简单。

但我的问题是,是否已经有与 RoutedCommand 一起使用的 MVVM 框架?我熟悉的唯一 MVVM 框架是 Caliburn.Micro,它目前不支持这种方式的路由命令(这让我感到惊讶,因为它确实支持自己的动作冒泡风格)。