问题标签 [fsxaml]

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

xaml - FsXaml 可以在 F# 解释脚本中使用吗?

我刚刚将其中一个 FsXaml 演示程序转换为解释的 F# 脚本,以便我可以对其进行试验和学习。它不会运行,并且解释器给了我以下错误消息:

System.NotSupportedException:动态程序集中不支持调用的成员。
在 System.Reflection.Emit.InternalAssemblyBuilder.GetManifestResourceStream(String name)
在 FsXaml.InjectXaml.from(String file, Object root)
在 FsXaml.App.InitializeComponent() 在 FsXaml.App..ctor()
在 FSI_0002.main[a ](a argv) 在 C:\Users\bobmc\OneDrive\FSharp\Learning\WPFExamples\FsXaml\demos\WpfSimpleMvvmApplication\WPFApp.fsx:line 104
at .$FSI_0002.main@() in C:\Users\bobmc\ OneDrive\FSharp\Learning\WPFExamples\FsXaml\demos\WpfSimpleMvvmApplication\WPFApp.fsx:109 行

我可以将 F# 解释器与 FsXaml 一起使用吗?感谢大家的帮助。

0 投票
1 回答
95 浏览

f# - 我可以将 FsXaml 与 .NET 4.0 一起使用吗?

FsXaml似乎仅适用于至少面向 .NET 4.5 的项目。
有没有办法在面向 .NET 4.0 时使用它?
如果是这样,我该如何实现?

0 投票
1 回答
52 浏览

wpf - f# xaml "this.factory" 不包含 CommandSync

我对 fsxaml 和 F# 有一个奇怪的错误。我有一个视图模型,我想从工厂属性调用 CommandSync,但它不可用。实际上它是空的,没有可用的功能。我在这里想念什么?

代码 :

PS 我已经有 ViewModule 参考

0 投票
1 回答
249 浏览

wpf - 使用 WPF 中的按钮调用 F# 函数(FsXaml 方法)

我正在尝试使用 F#、WPF 和 FsXaml 制作一个 Button Hello World 应用程序。我开始遵循本指南:

https://www.c-sharpcorner.com/article/create-wpf-application-with-f-sharp-and-fsxaml/

当我在 xaml 上加载内容并编译时,一切正常,但我没有设法通过按下按钮来调用函数,并且在他解释如何调用函数之前指南结束。

我已经看到了很多不同类型的方法,但还没有什么对我有用(而且许多指南已有多年历史,所以从那以后在框架内发生了很多事情)。一旦我理解了使用 FsXaml 时 x.xaml 和 x.xaml.fs 之间的逻辑,如果有一个工作(且简单)的起点,我就可以开始构建它会很棒。

我在 MainWindow.xaml 上的按钮:

我在 MainWindow.xaml 的 window 部分也有这个:

我的 MainWindow.xaml.fs:

我目前得到的错误:

0 投票
1 回答
65 浏览

f# - F# 函数名称和指向该名称的函数值之间的区别

我在 WPF / FsXaml 应用程序中使用以下代码片段:

当我将鼠标悬停时groupSelected,Visual Studio 显示以下内容:

它略有不同GroupSelected

我以前在其他情况下就注意到了这种差异,但从未考虑过太多。如果我想调用其中任何一个,我的代码中的语法是相同的......groupSelected(e)并且GroupSelected(e)都编译得很好。

但是,当我尝试从 XAML 中使用这两个时,只有这样才有效:

不起作用

这两者之间有什么区别,使得 XAML 静态扩展只适用于第二个?我会(错误地?)认为它们是同一回事。

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 投票
0 回答
149 浏览

wpf - F# FsXaml:哪些控件支持哪些事件?

<Button Click="MyClickMethod" />工作正常; XAML 类型提供程序MyClickMethod在代码隐藏中公开为虚拟方法。

另一方面,override this.MyDoubleClickMethod (_, _)得到漂亮的红色下划线<ListBox MouseDoubleClick="MyDoubleClickMethod" />,当然我的程序无法编译。

如果ListBox不支持事件,那么在我用三天时间编写应用程序之前知道这一点肯定会很高兴。FsXaml 是否在任何地方都有很好的文档记录(我不是指源代码)?我的问题普遍接受的解决方法是什么?

编辑:这是我的代码文件(减号AssemblyInfo.fsApp.*样板文件),按解决方案资源管理器顺序:

MainViewModel.fs:

MainView.xaml.fs:

MainView.xaml:

MainWindow.xaml.fs:

MainWindow.xaml:

0 投票
0 回答
60 浏览

.net - 如果 WPF 类更改,F# 无法加载 FSharp.Core

我正在使用FsXaml以下代码

在 F# 代码中使用该行时program.Run (new ConfigUI()),程序无法运行,调试窗口输出

但是,如果我将该行更改为(new Window()),它可以正常工作并且我的 WPF 窗口会显示。我已经确保它ConfigUI.xamlFSharp.Core.dll所有依赖项都在程序工作目录中,但我无法弄清楚为什么它无法加载程序集。

主函数从 C++ 程序外部调用,该程序使用ExecuteInDefaultAppDomain.

0 投票
2 回答
83 浏览

asynchronous - FsXaml 应用程序中的异步进度条

在我的F# (FsXaml/Code Behind)应用程序中,我想使用进度条而不像在 C# 中那样使用后台工作程序。根据互联网上的一篇文章(链接在这里),我尝试使用异步工作流。

我基于上述文章中的示例(在某种程度上)创建了代码,但它并没有像我预期的那样工作。当前线程(UI 线程)仍然被阻塞,就好像那里没有异步代码一样。不会切换到后台线程。只有在长时间运行的操作完成后才会激活进度条。删除onThreadPool函数没有任何效果。

我的问题是:我的代码有什么问题以及如何改正?

0 投票
1 回答
199 浏览

f# - 在 FsXaml 和 ElmishWPF 中更新 ProgressBar.Value

我正在尝试更新FsXaml 中的ProgressBar.Value。在 C# 中,我使用了下面提到的代码。我没有尝试在 F# 中实现 C# 方法,因为使用公共字段 ( myCaller ) 在我看来并不是一种功能方法(更不用说我不知道​​是否可以使用这个 C# F# 中的方法)。

我的问题是:F#(FsXaml/code behind)中用于更新ProgressBar.Value的最佳(或至少是好的)功能方法是什么?

编辑1:

删除了不相关的代码和文本。那些对 Elmish.WPF 不感兴趣的人请等到出现与 FsXaml 相关的答案。

编辑2:

埃尔米什.WPF

我尝试使用 Bent Tranberg 的评论和答案以及他出色的示例代码来处理ProgressBar问题。我的改编适用于for-loop,但不适用于List.map(i)/iter(i),这是我实际上需要进度条的集合函数。这是简化的代码:

文件:MainWindow.fs

即使将“i”索引与进度条值绑定对于 MainWindow 中的集合功能有效,它也不能解决问题。在现实生活中,用于处理进度条值的集合函数位于主窗口文件“上方”的其他文件中。像这样:

文件:MainLogicRight.fs

我知道(可能)无法将 pb 值与非索引函数(例如Array.collect )绑定。但重要的是 - 如何将 pb 值与List/Array.mapi/iteri 在本例中为 Array.Parallel.mapi)中的“i”索引绑定?

编辑3:

根据 Bent 的最后一个答案,我现在不相关的文本和评论已被删除。一个基于答案的例子是here