问题标签 [catel]

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

c# - Catel 4.0:IMessageService 同步获取对话结果

如何在 Catel 4.0 中显示带有 IMessageService 的对话框并立即(而不是异步)获得结果?

以前可以这样:

现在在 Catel 4.0 中,文档说:“现在有必要使用 await 或 Task.ContinueWith 来等待结果。”

我对异步编程不是很熟悉并且尝试了很多,但最终我无法获得等待实际对话结果的方法。

我做了这样的事情:

有人可以告诉我我做错了什么和/或提供一个示例如何同步等待并获得结果吗?

提前致谢。

0 投票
1 回答
288 浏览

c# - MVVM、Catel 和图形 UI 交互

在此处输入图像描述

我正在开发一个图形应用程序,用户单击 FrameworkElements 并将它们拖到画布上。它在代码隐藏中工作,但想用 Catel/MVVM 更新它。

我的一般问题:在这个应用程序中,ViewModel 必须“了解”视图,因为它必须知道相对于“LayourRoot”的 MousePosition 才能更新对象位置,这与 MVVM 模式相反。在后面的代码中处理所有 Mouse/FrameworkElement 交互以及任何具有 MVVM 属性的数据/FrameworkElement 会更好吗?(我所说的 data/FrameworkElement 是指在数据存储中存储某些属性值,例如 Canvas.Top、Canvas.Left、Fill 等。)

关于一般方法的任何建议?

0 投票
1 回答
173 浏览

catel - 使用 NuGet 包管理器时,模板和代码片段不应该与 Catel 包一起安装吗?

我已将 Catel.Core 3.7、Catel.MVVM 3.7 和 Catel.Extensions.Controls 3.7 添加到我的项目中,但没有代码片段。我查了一下,C:\Users\NNUser\Documents\Visual Studio 2013\Code Snippets\Visual C#\My Code Snippets那里没有 Catel 文件夹。我也找不到任何模板。

我的印象是这些应该是自动安装的,还是我需要按照这个线程末尾的指示手动安装它们。似乎在这里可用,但这些版本是独立的吗?

0 投票
1 回答
143 浏览

catel - 如何让 UIVisualizer 使用传递给它的 View Model

我正在尝试创建 view/viewModel 对作为 MessageBox 替换,它将由 UIVisualizer 服务调用。viewModel 有五种不同的构造器,一种是默认构造器,另一种用于定义MessageBox 的不同属性(例如Type、Image、Message、Title 等)。每次我希望弹出 MessageBox 时,我将使用四个非默认构造函数之一创建 viewModel。与使用内置 MessageService 相比,我这样做是因为我正在为我的应用程序使用第三方控件,并且我希望 MessageBox 的外观与应用程序的其余部分相匹配。

我的问题是,即使我正在创建 viewModel,Catel 也没有使用我传递给 UIVisualizer 的 viewModel,而是从默认构造函数创建一个新的 viewModel。

有谁知道如何让这种行为停止。

0 投票
1 回答
236 浏览

catel - 运行时异常:无法加载显示名称为“Catel.MVVM.Aero”的程序集

我对 Catel 和 .NET 开发还很陌生,现在正在对现有项目进行一些小的改进。我注意到我有一些运行时异常,这是我不喜欢在我的代码中出现的东西。因此,我开始调查是什么导致了这些。我得到的第一个是“BindingFailure”。为了尝试隔离问题,我创建了最简单的 Catel 应用程序;一个带有空视图模型的主窗口,我仍然得到这个异常。当我启动它时,我得到了这个运行时异常:

(最后一句是瑞典语,意思是“找不到文件”。)我看不出我做错了什么。我是否以错误的方式使用框架?我错过了什么吗?

我正在使用 Catel 3.9.0 和 Core 包和 MVVM。

这是我的代码:

MainWindow.xaml:

主窗口.xaml.cs

MainWindowViewModel.cs

0 投票
1 回答
738 浏览

c# - Catel 中的窗口导航

我正在使用具有登录屏幕的 Catel 开发 WPF 应用程序。在用户输入他的详细信息并可以继续之后,我将如何关闭登录屏幕并使用 Catel 显示“主”屏幕?

我尝试使用 IUIVisualizerService,但我无法将用户名传递给它,例如,在要打开的窗口上的视图的视图模型中使用,除非我做错了。

我的应用程序中有其他场景,我需要从当前打开的窗口打开一个新窗口(我可能需要在打开新窗口之前关闭它)并将一些数据传递给包含视图的视图模型。

有什么建议么?

一些代码要求:

所以需要发生的是,来自 LoginView 的 ViewModel(它是 LoginWindow 上的 UserControl)的用户名必须传递给 HomeView 的 ViewModel(它也是一个 UserControl,位于 HomeWindow)上的用户名。

此代码并不重要,因为这是一个虚构的场景。我试图弄清楚的核心是,当在其他地方生成信息时,如何将信息传递给其他 Windows 的 View 的 ViewModel。

0 投票
1 回答
118 浏览

c# - 如何将事件处理程序附加到集合项?

大家好,我的表单中有可消耗的列表,我想将点击效果绑定到可扩展列表中的项目。到目前为止,一切都很好。我已经设法正确显示可扩展但我无法绑定双击。我在 MVVM Catel 做我的项目。

我的 XAML:

在 ModelView 类中我有:

0 投票
1 回答
582 浏览

c# - Catel 中的 ViewModel 集合

我有几个DataTemplates 的视图。每个DataTemplate都有一个 View 和 ViewModel ,如下所示:

然后我有一个TabControl绑定到一个DataContext.

在 DataContext 中,有一个 Collection,其中包含 DataTemplates 引用的所有不同 viewModel 的列表:

显然,包含 TabControl 的视图有一个“主”视图模型。

这很好用,TabItem为我为 Collection 中的每个项目创建 s 并设置每个页面的内容。

我现在想把它移到Catel,但不知道从哪里开始,因为(如果我错了,请纠正我):

  1. 我现在不应该在任何 ViewModel 中引用任何其他 ViewModel 并且

  2. Catel 会自动为我链接我的视图和视图模型。

有什么建议么?

0 投票
0 回答
71 浏览

catel - ModelAttribute 没有正确取消

认为我可能发现了一个错误或没有进行正确的建模,因为当我取消模型中的一个属性时,我的模型会发生变化。让我解释一下并提供一个简单的测试。

A 有一个带有 Running 属性的 Machine 模型。在我的 MainWindow 中,我有一个 TextBlock,它显示了一个 Machine 实例的状态。还有一个按钮可以调出简单的控制来启动和停止机器。MainWindowView 的 ViewModel 有一个用 Model 属性修饰的 CurrentMachine 属性,控制是在 StartStopView 中实现的,并通过具有 ControlledMachine 属性的 StartStopViewModel 实现(也用 Model 属性修饰)。当用户按下 MainWindow 中的按钮时,绑定到它的命令会创建 StartStopViewModel 实例并为其提供 CurrentMachine 实例,然后调用 ShowDialog。

如果用户单击 Start 或 Stop 按钮,他们分别将 Running 设置为 true 或 false 并且它按预期工作。如果用户在对话框中单击取消,则无法正常工作。然后 Running 设置为 false,尽管不是通过调用 Running 属性的 set 方法(在此处设置断点会显示这一点)。虽然在后台似乎发生的是,当按下 Cancel 时,ControlledMachine 值被分配给新创建的 Machine 实例!如果我在 Machine 构造函数中为 Running 分配一个默认值并在那里放置一个断点,我会看到这一点:

CancelTest.exe!Machine.Machine() 第 14 行 C# [Native to Managed Transition] Catel.Core.dll!Catel.IoC.TypeFactory.TryCreateToConstruct(System.Type typeToConstruct, System.Reflection.ConstructorInfo constructor, object[] parameters, bool checkConstructor, bool hasMoreConstructorsLeft) 第 552 行 + 0xd 字节 C# Catel.Core.dll!Catel.IoC.TypeFactory.CreateInstanceWithSpecifiedParameters(System.Type typeToConstruct, object[] 参数, bool autoCompleteDependencies, bool preventCircularDependencies) 第 327 行 + 0x81 字节 C# Catel.Core .dll!Catel.IoC.TypeFactory.CreateInstance(System.Type typeToConstruct) 第 129 行 + 0x12 字节 C# Catel.Core.dll!Catel.Runtime.Serialization.SerializerBase.GetContext(System.Type modelType, System.IO.Stream 流, Catel.Runtime.Serialization。SerializationContextMode contextMode) Line 264 + 0x14 bytes C# Catel.Core.dll!Catel.Runtime.Serialization.SerializerBase.DeserializeMembers(System.Type modelType, System.IO.Stream stream) Line 209 + 0x11 bytes C# Catel.Core.dll!Catel .Data.ModelBase.BackupData.RestoreBackup() 第 117 行 + 0x31 字节 C# Catel.Core.dll!Catel.Data.ModelBase.System.ComponentModel.IEditableObject.CancelEdit() 第 297 行 C# Catel.Core.dll!Catel.Data。 EditableObjectHelper.CancelEditObject(object obj) Line 77 C# Catel.MVVM.dll!Catel.MVVM.ViewModelBase.UninitializeModel(string modelProperty, object model, Catel.MVVM.ModelCleanUpMode modelCleanUpMode) Line 1224 + 0x9 bytes C# Catel.MVVM.dll!Catel .MVVM.ViewModelBase.CancelViewModel() 第 1408 行 + 0x8f 字节 C#IO.Stream 流)第 209 行 + 0x11 字节 C# Catel.Core.dll!Catel.Data.ModelBase.BackupData.RestoreBackup() 第 117 行 + 0x31 字节 C# Catel.Core.dll!Catel.Data.ModelBase.System.ComponentModel。 IEditableObject.CancelEdit() 第 297 行 C# Catel.Core.dll!Catel.Data.EditableObjectHelper.CancelEditObject(object obj) 第 77 行 C# Catel.MVVM.dll!Catel.MVVM.ViewModelBase.UninitializeModel(string modelProperty, object model, Catel. MVVM.ModelCleanUpMode modelCleanUpMode) 第 1224 行 + 0x9 字节 C# Catel.MVVM.dll!Catel.MVVM.ViewModelBase.CancelViewModel() 第 1408 行 + 0x8f 字节 C#IO.Stream 流)第 209 行 + 0x11 字节 C# Catel.Core.dll!Catel.Data.ModelBase.BackupData.RestoreBackup() 第 117 行 + 0x31 字节 C# Catel.Core.dll!Catel.Data.ModelBase.System.ComponentModel。 IEditableObject.CancelEdit() 第 297 行 C# Catel.Core.dll!Catel.Data.EditableObjectHelper.CancelEditObject(object obj) 第 77 行 C# Catel.MVVM.dll!Catel.MVVM.ViewModelBase.UninitializeModel(string modelProperty, object model, Catel. MVVM.ModelCleanUpMode modelCleanUpMode) 第 1224 行 + 0x9 字节 C# Catel.MVVM.dll!Catel.MVVM.ViewModelBase.CancelViewModel() 第 1408 行 + 0x8f 字节 C#EditableObjectHelper.CancelEditObject(object obj) Line 77 C# Catel.MVVM.dll!Catel.MVVM.ViewModelBase.UninitializeModel(string modelProperty, object model, Catel.MVVM.ModelCleanUpMode modelCleanUpMode) Line 1224 + 0x9 bytes C# Catel.MVVM.dll!Catel .MVVM.ViewModelBase.CancelViewModel() 第 1408 行 + 0x8f 字节 C#EditableObjectHelper.CancelEditObject(object obj) Line 77 C# Catel.MVVM.dll!Catel.MVVM.ViewModelBase.UninitializeModel(string modelProperty, object model, Catel.MVVM.ModelCleanUpMode modelCleanUpMode) Line 1224 + 0x9 bytes C# Catel.MVVM.dll!Catel .MVVM.ViewModelBase.CancelViewModel() 第 1408 行 + 0x8f 字节 C#

我还没有开始深入研究 Catel 代码以查看 Catel 内部实际发生的情况,但对我来说这似乎不是预期的行为,对吗?

我已经用 3.9.0 和最新的 4.0.0(unstable0456) 对此进行了测试。它的行为相同。

我没有在此处发布所有代码,而是将其放在 GitHub https://github.com/karl-petter/CatelCancelTest

0 投票
3 回答
647 浏览

c# - Catel:MVVM 如何从列表视图中获取选定的值并将其保存到变量中?

大家好,我有一个由 ObservableCollection 填充的列表视图。现在我想从列表中获取所选项目的值并存储它。我怎样才能做到这一点?

这是我的视图模型:

在 XAML 文件中,我有以下代码: