问题标签 [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 投票
2 回答
10292 浏览

wpf - 从视图模型打开新窗口

嗨,我有一个初学者的问题。我有外壳(它是 wpf 窗口),在这个外壳中是屏幕(它是一个用户控件/视图模型)。

我想从视图模型中打开新窗口,而不是在 shell 中显示用户控件。

所以我创建了新窗口 - ChatView

使用 MEF导出ChatViewModel

在视图模型中我有这个方法:

使用 ShowScreen 类帮助我 Mr.Marco Amendola。它看起来像这样:

我的问题是如果我尝试显示新窗口它不起作用,它只有在我在 shell(窗口)中显示新的用户控件时才起作用。

我想实现类似Skype的行为。您有一个带有列表框的主窗口,您双击项目并显示新的聊天窗口。

主窗口可以使用 EventAggregator 在聊天窗口上发布,聊天窗口也可以在主窗口上发布。这是我的目标。

我知道我不能在显示新窗口时使用 ShowScreen 类。我想知道从视图模型创建新窗口并将事件聚合器注入此 vie 模型的正确方法是什么。

有什么建议吗?感谢您的帮助和时间。

0 投票
1 回答
134 浏览

caliburn - 相同的视图显示了两次

我想在我的应用程序中实现一个“模块切换器”,它会显示一个类似 alt-tab 的界面,显示打开的模块。

现在它的结构是这样的

ModuleSwitcherView 作为一个对话框从 ModuleShellView 打开并绑定到当前打开的模块。

这会导致后面屏幕中的活动模块转换为空。有没有办法让视图在后台打开,同时在另一个对话框中显示它?alt-tab 窗口只需要视图的“视图”,它不需要是交互式的。

0 投票
1 回答
1351 浏览

silverlight - System.Windows.Interactivity 中缺少 GoToStateAction 和 KeyTrigger

我正在使用MediaOwl来帮助我开始使用Caliburn.Micro

在 MediaOwl 中,我删除了对 的引用Microsoft.Expression.Interactions并添加了对System.Windows.Interactivity. 这似乎是正确的做法。

问题是我找不到标题中提到的类的替代品:GoToStateActionKeyTrigger.

什么是正确的解决方法?

谢谢。

0 投票
1 回答
2853 浏览

wpf - WPF,带有MVVM(Caliburn.Micro)的可绑定richTextBox-文档已经属于另一个RichTextBox

我有一个非常有趣的问题。我在 WPF 应用程序中使用了这些技术:Caliburn.Micro 和 MEF。

我从视图模型打开新窗口(不是屏幕)。它运作良好。

Init-View-Model我有这个方法,它打开新的 WPF 窗口,而不是 shell 中的屏幕。

ShowWindow类如下所示:

我使用事件聚合器将消息从初始化视图模型发送到新窗口。

在我添加richtebox控件之前,一切都运行良好。我需要可绑定的富文本框。所以我

使用 Jason Mueller 的可绑定版本 (http://social.msdn.microsoft.com/forums/en-US/wpf/thread/f77c011a-0aba-449f-b6f4-920e58ebf997/)

新视图模型如下所示:

在 New-View-Model 类中,我在 View 中的 RichTextBox 上绑定了 Conversation 属性。

看法:

问题是。

  1. 我从 Init-View-Model 调用方法 public IEnumerable Send() -> 它调用了 New-View-Model 的 cotructor -> 并打开了新窗口。没错

  2. 比我第二次调用方法 public IEnumerable Send() 我得到这个错误: System.Argument.Exception {“文档已经属于另一个 RichTextBox。”}

我在可绑定的richTextBox 类中遇到此错误。

我认为问题是因为它只调用一次 New-View-Model 的构造函数。所以我调用了五次方法 Send 但它只调用了一次 New-View-Model 的构造函数。怎么能解决呢?

堆栈跟踪:

问题出在哪里,我尝试了很多方法,但任何方法都不起作用。感谢您的建议和帮助。我很无奈。

0 投票
1 回答
1628 浏览

events - Caliburn.Micro 和事件聚合器 - 不需要的调用句柄方法

我在 2 个屏幕之间发布/处理消息时遇到一个问题。

我的情况是:

  1. 信使屏,是主屏,在聊天屏上发布,都是从屏。带有来自服务器的消息的 Messenger 视图模型句柄。

  2. 聊天屏幕可以在信使屏幕上发布消息。信使视图模型在服务器上发送此消息。

Messenger 类如下所示:

从屏类如下所示:

我的问题是:

第一个问题是:

  • 我从 ChatViewModel 类中调用方法 SendRp。
  • 它在 ChatViewModel 中调用方法 void Publish(),
  • 然后是从类 MessengerViewModel 调用方法 void Handle()
  • 然后还从 ChatViewModel 类调用方法 void Handle()。

我不想在 ChatViewModel 类中调用方法 Handle()。为什么如果我从 ChatViewModel 向 MessengerViewModel 发送消息在 ChatViewModel 类中也称为方法 Handle?

我的第二个问题是:

我想仅在某些从属屏幕上从 MessengerViewModel 消息发布。

MessgerVieModel 有队列消息:{msg1, msg2, msg3, ..., msgN}

我想发布:

  • 从屏幕 #1 上的 msg1。
  • 从屏幕 #2 上的 msg2
  • ...
  • 从屏幕 #3 上的 msg3
0 投票
1 回答
932 浏览

wpf - 父子模型交互

是否可以在 caliburn.micro 中设置类似 wpf 窗口所有者的东西?

我有 PARENT VIEW MODEL,从这个模型中我用这个方法打开 CHILD SCREEN {VIEW MODEL}:

此方法创建一个新的 WPF WINDOW - CHILD SCREEN 并使用一些变量初始化 CHILD VIEW MODEL。

我想设置这样的 CHILD_SCREEN.PARENT = PARENT_VIEW_MODEL。

如果我关闭父视图模型,我想实现它也关闭所有子模型。

此外,我如何检查屏幕在我的情况下的 WPF 窗口中是否从 MAIN VIEW MODEL 处于活动状态/非活动状态?

0 投票
2 回答
1967 浏览

wpf - IEnumerable- caliburn 微

我在打开新窗口时在视图模型中使用此方法:

此方法例如绑定在按钮上。

我尝试在其他 void 方法中使用此方法。像这样的东西:

但它不会打开新窗口。有可能解决这个问题吗?我需要在其他方法 typeof void 中使用 OpenChatScreen 方法,如果可能的话,我想打开新窗口。感谢您的帮助。

代码改善:

我试试这个:

我收到此错误:

*错误 2 无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“Caliburn.Micro.IResult”。存在显式转换(您是否缺少演员表?) C:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\Pokec_Messenger\ver.beta\Pokec__Messenger\Spirit_Caliburn_Micro_v1.1\ViewModels\MessengerViewModel.cs 314 45 Spirit_Caliburn_Micro_v1。 1*

所以我尝试转换为 IResult:

错误:

*错误1 只有赋值、调用、递增、递减和新对象表达式可以作为语句使用 C:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\Pokec_Messenger\ver.beta\Pokec__Messenger\Spirit_Caliburn_Micro_v1.1 \ViewModels\MessengerViewModel.cs 314 29 Spirit_Caliburn_Micro_v1.1*

我不知道如何在 void 方法中使用 OpenChatScreen 方法。

0 投票
1 回答
4200 浏览

c# - 如何使用 Caliburn.Micro MVVM 将焦点设置到控件

我有一个表单,我想在某些用户操作发生时将焦点设置到文本框。我知道 MVVM 的处理方式是绑定到 VM 属性,但是 TextBox 没有允许这种情况发生的属性。从 VM 设置焦点的最佳方法是什么?

0 投票
2 回答
1974 浏览

c# - 使用 caliburn.micro 在表单中查找控件的最佳方法是什么?

使用 Caliburn.Micro 时,是否有一种从 ViewModel 的表单中查找命名控件的好方法?IoC 是否提供任何获取表格的方法?

0 投票
1 回答
3692 浏览

wpf - 方法停用和 TryClose - Caliburn.Micro

如果有人解释我在 MVVM 框架 Caliburn.Micro 中方法 Deactivate 和 TryClose 之间的“差异”,我将不胜感激。

例如我的应用程序有这样的结构:

  • 外壳(WPF 窗口)
    • SomeScreen(用户控件)- 处于活动状态

我知道如果屏幕停用,每次都会调用 Deactivate 方法。TryClose 方法用于尝试关闭某些屏幕。

我的问题是:

  1. 我单击 WPF 窗口上的 X 按钮。首先是在 SomeScreen 对象上调用方法停用,然后在 Shell 对象上调用相同的方法?

    停用方法后完全销毁对象?- “删除对他的引用”?

  2. 当我关闭作为外壳的 WPF 窗口时,它会从 IConductor 调用哪些方法?