问题标签 [elmish-wpf]

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

wpf - 修复 XamlObjectWriterException,无法在 F#、FsXaml、WPF 应用程序中创建未知类型?

我在使用 F#、FsXaml 和 Elmish.WPF 构建的 WPF 应用程序中遇到此错误。

  • Views 项目包含 XAML 并包含对 C1.WPF.4.dll 的引用。
  • XAML 声明来自 C1.WPF.4.dll 的控件实例。
  • 但是,没有使用 C1.WPF.4.dll 中的任何类型的 F# 代码。
  • 因此,正如 IL Spy 所证实的,Views.dll 不包含对 C1.WPF.4.dll 的引用。
  • 因此,当我构建 App.exe 时,输出文件夹中不包含 C1.WPF.4.dll。
  • 因此,我得到一个运行时错误。

虽然我可以在我的 App 项目中包含对 C1.WPF.4.dll 的引用,但我宁愿不这样做。

有一个更好的方法吗?

0 投票
1 回答
69 浏览

elmish-wpf - 支持 Elmish.WPF 应用程序中的插件架构?

我知道该怎么做:

  • 在运行时查找和加载插件程序集。
  • 实例化插件实例,包括基于 XAML 的视图。
  • 将基于 XAML 的视图放在屏幕上。

我什至可以update msg model从我的应用程序更新到插件的更新。

我缺少的是如何将我的运行时实例化插件连接到 Elmish.WPF 绑定中。

当然,我目前主要调用以下内容:

我的 MainWindow.init 正在创建一个单独的线程,该线程成功地初始化视图并将它们添加到显示中。

如何在运行时添加新绑定?

0 投票
0 回答
73 浏览

xamarin.forms - How do I get a datagrid type control in fsprojects/Fabulous

fsproject/Fabulous does not appear to have a datagrid. That would be a columnated ListView with non-scrolling header and footer rows (not grouping headers). Such a control seems essential for any line of business (LOB) application. It is also necessary for tablet and desktop size screens that can present a lot of tabulated information clearly.

Am I missing something?

Presently, I am exploring constructing something as perhaps the following, but am still a novice at Xamarin and Fabulous (Fabulous-Simple-Elements actually):

0 投票
1 回答
164 浏览

f# - 如何使用 Elmish.wpf 和 F# 管理多个窗口、用户控件和自定义控件?

我是 F# 的新手。我最近被介绍给 Elmish.wpf 和 MVU 设计。我正在使用的应用程序在 C# WPF 中,带有许多 WPF 用户控件、自定义控件和窗口。Elmish.wpf 似乎将视图模型的概念扁平化为单个数据上下文。(??)。Elmish.wpf 可以与多个窗口、用户控件和自定义控件一起使用吗?(这里的“多个”是指大约 20 个窗口、用户控件和自定义控件。)

如果是这样,有这样的例子吗?

在查看 Elmish.wpf 网页时,似乎所有窗口都需要在初始化时创建——

有一个更好的方法吗?我在吠叫错误的树吗?

提前致谢。

0 投票
1 回答
149 浏览

f# - 如何使用 Elmish.WPF 从 F# 启动多个窗口?

我是 Elmish.WPF 和 F# 的新手。在研究 NewWindow/NewWindow.Views 的教程时,作者从 C# 分配了以下代码:

即调用 F# NewWindow.Views 项目中的 main 方法:

如何更改 F# 模块主例程以便直接将其用作入口点并避免它成为函数?也就是说,我希望 F# 模块能够通过 Elmish 直接控制窗口。类似于以下内容,但调用了自包含的从属窗口:

简而言之,我希望 C# 视图不了解 F# 项目。

这可以用 Elmish.wpf 完成吗?

任何帮助(尤其是示例代码:))都会很有帮助。

0 投票
1 回答
155 浏览

f# - 使用 Elmish.WPF (F#) 管理 WPF 选项卡控件?

我在主窗口中有一个复杂的 WPF Tab 控件,全部使用 C#,使用 .NET Framework。主窗口提供了一个一致的主菜单和一个包含选项卡控件的内容控件。

选项卡控件的每个选项卡使用特定于每个用户控件的视图模型呈现不同的用户控件。

在进入兔子洞之前,我需要知道 Elmish.WPF 是否可以为这种情况提供适当的 F# 支持。

在研究这些示例时,向 Elmish.WPF 的关键切换似乎发生在:

一旦出现主窗口和第一个选项卡,是否可以区分 init、update 和 bindings 并允许用户在选项卡之间切换?如果是这样,是否可以将新的选项卡状态“输入”到 Elmish.WPF 中?

任何帮助或建议将不胜感激。

TIA

(更复杂的是,其中一个选项卡显示了一个带有自定义装饰器的数据网格,用于列表操作)。

0 投票
0 回答
97 浏览

f# - 如何将 C# XAML 中的 F# 模块用于 DataTemplates 和 DataContext?

我开始自上而下地学习 F#/Elmish。我发现了很多关于 F# 的信息,但很少有关于从 C# 迁移到 F# 的信息。

我最上面的 XAML 是:

这不编译。

这里有多个错误。“MainWindow”是一个 C# XAML 视图。

xmlns:models="clr-namespace:Models;assembly=Models" 指的是一个 F# 项目(称为 Models),其中 ContactDetails 定义为:

Internet、电话号码和地址的定义与联系人详细信息完全相同。

视图都在一个项目(称为视图——C#)中定义,例如:

所有视图都以相同的方式定义。

所以,我的新手问题很简单:

  1. 尽管一切编译都没有错误,但在运行时,clr 无法找到“模型”项目或文件。如何解决这个问题?
  2. 假设我可以让它识别 F# 项目“模型”,我如何正确地将 datacontext 设置为 F# 模块?
  3. F# 的 observablecollection 是什么?(如下面的“详情”?)
  4. 可以使用 DataTemplate 来处理 C# xaml 中的 F# 数据类型吗?如果有怎么办?

对这些事情的任何帮助将不胜感激,因为我在学习时最好采用自上而下的方法。:)

TIA

编辑#1。解决了“找不到文件模型”的问题。我忘记将 Models 项目添加到 Views 项目中的引用中。:(

0 投票
0 回答
288 浏览

wpf - Visual Studio 2019 中 Elmish.WPF 的新手设置

冒着打死马的风险,我想弄清楚使用 Elmish.WPF 的初始设置。

我的意图是基本上有两个项目:

  1. FrontOfficeV - 一个 C# 项目,用于保存 XAML、Windows 等。
  2. 模型——用于 Elmish.WFP、F# 代码等的 F# 项目。

在尝试了大多数项目类型选项 (Visual Studio 2019) 之后,我选择了: C# 项目的控制台应用程序 (.NET Framework) C#。

这创建了默认为:目标框架:.NET Framework 4.7.2 输出类型:控制台应用程序的 C# 项目。这也创建了一个“program.cs”文件。

接下来,在 C# 控制台应用程序中使用 ADD -->New Item没有显示“窗口”选项。它确实显示了“用户控制(WPF)”选项。所以“用户控件(WPF)被添加并重命名为“MainWindow”。然后我将xaml中的元素标记从UserControl更改为Window,并将后面的代码更改为从Window而不是UserControl继承。最后,我更改了项目属性将输出类型编译为:Windows Application。这个 C# 项目现在被标记为 Visual Studio 的“启动”项目。

接下来,使用以下文件创建 F# Models 项目:Library (.NET Framework) F# Windows library。这创建了一个默认为:目标框架:.NET Framework 4.7.2 输出类型:类库的项目。在 F# 类库中,添加了一个程序——FrontOffice.fs:

最后,将 program.cs 更改为:

这里的重点是使用:Program.mkSimpleWpf。

为什么这么麻烦?我想使用完整的 WPF/C#/XAML 好东西(如主题、自定义控件等),但我不太确定在 F# 中直接编译 XAML 是否可以做到这一点。我希望能够在 XAML 中使用 F# 数据类型,因此 C# 项目需要对 F# 模块的引用,因此在 C# 中创建窗口并将引用传递给 F# 模块入口点似乎更容易,如以上。

问题:

  1. 上面的设置对于 Elmish.WPF 是否正确?
  2. 是否有更好的设置来实现我的目标?
  3. 从 Visual Studio 2019 开始,xaml 的 F# 编译是否适用于主题、自定义控件等?我可以期待什么打嗝?

感谢您对这些问题的任何澄清。TIA

0 投票
0 回答
121 浏览

f# - 如何在 F# Elmish.WPF 中设置 ViewModel 类型以供 WPF DataTemplate 使用?

我正在学习使用 Elmish.WPF。下面是带有 UserControl ContactDetailsView 的简单示例的选项卡控件的典型 XAML 代码:

这是我用来向 xaml 提供视图的 F# 代码:

一切都编译并运行!

但是,在检查选项卡内容时,WPF 会报告:

所以我相信 XAML 中的 DataTemplate 无法匹配来自 Elmish.WPF 的 DataType。如何解决这个问题?我错过了什么?(我猜我需要以某种方式将 Elmish.WPF.ViewModel'2[System.Object.System.Object] 设置为适当的 DataType ???)

TIA

0 投票
1 回答
87 浏览

f# - 在 Elmish.WPF (F#) 中,如何编写 Binding 以支持具有不同模型的另一个选项卡控件中的选项卡控件?

作为一个完整的新手(但学习速度很快),我一直在通过 Elmish.wpf 进行学习,但我不清楚如何管理放置在另一个 TabControl 的 TabItem 上的 TabControl。例如,在 Xaml 中,顶级窗口是:

每个视图:DoctorView、NurseView、MedicalRecordsView 等,都有自己的与此类似的选项卡控件(但具有不同的视图和属性):

F# 中的 Top Most Window当前定义为:

现在,我想我需要将 DetailType 中的 DoctorView、NurseView 等更改为单独的模型——因为每个模型现在都有自己的选项卡控件和完全不同的数据输入属性,

我在想我需要使用 Elmish.WPF Bindings.SubModel。但是如果我这样做了,那么如何重写顶部窗口的绑定呢?这怎么做最好?

感谢您对此的任何帮助。

TIA