问题标签 [caliburn]

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 回答
728 浏览

wpf - Caliburn Micro - UI 未第二次更新

我正在开发一个使用 Caliburn Micro 的 WPF 项目。我遇到了第二次打开视图时视图中的控件没有更新的问题。第一次数据绑定工作正常。

当我在第二次调用 View 时单步执行 ViewModel 时,我可以看到数据绑定属性正在获取新值并调用 NotifyOfPropertyChange() 但更改未反映在 UI 中。有任何想法吗?我的视图继承PropertyChangedBase()

以下是我在视图模型中的属性

和 Xaml

0 投票
1 回答
1093 浏览

c# - 嵌套用户控件的数据上下文

背景 :-

我有一个 wpf 视图,其中包含一个组合框,该组合框由使用 caliburn micro/ninject 和 mvvm 模式的视图模型填充;此视图还包含一个堆栈面板区域。当用户从组合框中选择适当的选项时,我将适当的用户控件插入到堆栈面板中,向用户呈现到相关显示的无缝过渡。

显示在堆栈面板中的每个“嵌套”用户控件都有自己的视图模型,由 caliburn micro 自动关联。

问题 :-

“嵌套”用户控件绑定都尝试引用父视图模型,而不是专门与它们关联的视图模型。

最初,我可以通过指定来解决这个问题:-

但这需要视图模型中的无参数构造函数,但我需要能够将参数传递给此视图模型,以便 Ninject 可以注入诸如 EventAggregator 之类的对象。

由于我对 WPF 还很陌生,所以在圆圈中四处走动,因此将不胜感激。

谢谢。

詹姆士。

0 投票
1 回答
685 浏览

c# - 在 WPF / Ninject 中访问单例事件聚合器

我们正在使用 WPF/Caliburn Micro 和 Ninject 并有一个引导程序调用它:-

我的理解是,每次实例化一个对象时,这将被注入到构造函数参数列表中,但在某些情况下构造函数必须是无参数的。当我们可以在构造函数中没有参数时,我们如何访问 EventAggregator?

0 投票
1 回答
1051 浏览

wpf - Caliburn 中 View 和 ViewModel 之间的交互

我是 Caliburn 的新来者。

我有几个关于 MVVM 和 Caliburn 的问题。

  1. 视图如何在 ViewModel 上显式调用方法?Caliburn 首先调用 ViewModel 构造函数。那么如果是,那么实例将被包含在哪里?我的 View 中的代码此刻创建了一个新实例(我需要显式调用 ViewModel 上的方法)。但是关于 ViewModel 应该已经实例化,这是愚蠢的。

  2. 如何在 UI 线程上强制绑定更新?

0 投票
1 回答
258 浏览

data-binding - 如何绑定控件属性?

我正在使用来自 Caliburn.Micro 的基于约定的绑定,但我有一个小问题:

如何设置绑定应绑定到的属性?如果我创建一个带有 的控件x:Name="SomeProperty",我该如何选择是否SomeProperty应该将 的值绑定到我的控件的Value属性、我的控件的OnClick事件或不同的东西,如ContentTag属性?

示例:我HyperlinkButton想要绑定到特定 URL,并且想将其绑定OnClick到 ViewModel 中的事件处理程序。

然而,Content 属性不是用 URL 的值填充的,Read more而是用 URL 的值填充的。在此示例中,我如何:

  • 将导航 URI 设置为我的 ViewModel 属性中的 URL 值
  • 将内容设置为“阅读更多”
  • 在我的 ViewModel 中指定一个事件处理程序来处理点击

任何人都可以帮助我吗?

0 投票
1 回答
585 浏览

wpf - 无法在同一视图中添加两个用户控件

我有一个列表视图,其中有两个子视图。一个是显示视图,另一个是编辑视图。这是我定义列表(父)视图的方式。请注意,我希望两个子用户控件在父控件中占据不同的空间。

然后在我的视图模型中,我根据用户响应以下列方式激活这些项目

**查看模型**

上面的代码有效,但细节视图加载在选项卡空间(用于编辑视图的空间)中。实际上,ActivateItem(viewModel) 确实选择了要显示的正确视图类型,但它加载到了显示视图的错误位置,即显示视图加载到了屏幕上的编辑视图空间中。当然,我错过了一些明显的东西。

总之,我们如何让定义在 Parent UserControl 中的两个 UserControl 在自己的空间中激活?

编辑 - 1:

这是两个屏幕截图,分别显示了我需要加载编辑视图和详细视图的位置。

已加载编辑屏幕

查看屏幕已加载(不应在编辑区域中加载)

正如您在第二个屏幕截图中看到的那样,详细视图被加载到详细信息区域以及编辑区域(选项卡)中。我不希望详细视图仅出现在详细信息区域中。编辑区仅用于编辑视图。

这是我用来生成屏幕截图的代码。

包含两个视图的主视图

编辑2: 我认为我非常接近让它工作。根据您的建议,我修改了 Main(Parent) 容器,如下所示。

编辑屏幕和详细信息屏幕现在出现在适当的位置。但是,没有调用 Detail ViewModels OnActivate,因此我得到了一个空白的详细视图,没有填充任何变量。详细信息视图字段的所有加载都在OnActivate()覆盖上完成。这是我的 GroupDetailViewModel 的定义方式

所以当然,我缺少一些属性。还是我必须在 GroupDetailViewModel 上调用一些方法来手动加载详细信息?

0 投票
1 回答
1593 浏览

c# - 在 GridControl.View 中绑定 IsEnabled 属性

我尝试IsEnabled在上下文菜单项中绑定属性。上下文菜单位于 Devexpress 中GridControl.View

我认为问题出在 DataContext 中。barbutton 项正在网格的 DataContext 中搜索属性HasPermissionDelete。但这不是视图模型的数据上下文。我的财产HasPermissionDelete在 ViewModel 上。

我正在使用 caliburn.micro。

你能帮我修复这个绑定吗?

我的xml代码:

0 投票
1 回答
1282 浏览

wpf - 带有附加事件的 Caliburn,目标失败

好的,所以我正在尝试将附加事件添加到控件。现在 Caliburn 并不天真地支持这一点,但我使用了另一篇文章中的代码,该文章似乎提供了一种解决方法。我基本上需要一种方法来添加这种代码this.AddHandler(RadDragAndDropManager.DragInfoEvent, new EventHandler<DragDropEventArgs>(OnDragInfo), true);,但 caliburn 不支持附加事件。这是我的代码:

RoutedEventTrigger 定义如下:

在我的 ViewModel 中,我只是有一个像这样的处理程序:

当我运行这个时,我得到的错误是base.OnEvent(args);关于No target found for method OnDropQuery.我正在努力弄清楚为什么这不起作用。

0 投票
1 回答
245 浏览

c# - WPF和Caliburn C#编译后不渲染窗口

我想尝试用 Caliburn.Micro 框架创建一个 WPF 应用程序,但是我遇到了一个问题。我在 Silverlight 中看到了许多教程资源,但在 WPF 上并不好。我拥有 Silverlight 教程中的所有内容,所有内容都已编译但未渲染。

引导程序

应用视图

应用模型视图

谢谢您的回复。

0 投票
1 回答
1135 浏览

c# - 找不到 Caliburn 抛出的方法的目标

我正在尝试创建一个应用程序,它允许我在 Caliburn.Micro for MVVM 的帮助下在画布组件上绘制一些涂鸦。当我运行应用程序并单击画布时,我得到“没有找到方法 OnMouseDown 的目标”。例外。我定义了调用 MouseDown 事件时要调用的方法,但不知何故 Caliburn 找不到它。

项目文件可在此处获得:SketchingTool.zip