【问题标题】:How can I add a Xamarin.Forms XAML file to an FSharp project?如何将 Xamarin.Forms XAML 文件添加到 FSharp 项目?
【发布时间】:2018-03-21 00:49:45
【问题描述】:

如何将 Xamarin.Forms XAML 文件添加到 FSharp 项目?

默认情况下,XAML 文件具有 C# 代码隐藏。 我尝试将带有 C# 代码隐藏的 XAML 文件移动到 F# 项目。 然后我将文件扩展名更改为“.fs”。 但是,我的尝试使 VS2017 崩溃。

【问题讨论】:

标签: xamarin.forms f#


【解决方案1】:

编辑

C# 视图和 F# 视图模型

我猜 WPF 和 Xamarin.Forms 会以同样的方式看到这一点。您可以在 C# 项目中定义所有视图,并将 ViewModel 逻辑放在可移植类库 (PCL) 中。当 View 需要其 DataContext 时,您可以直接在 C# 项目中引用您的 ViewModel。这样,它的行为方式与使用 C# ViewModel 的方式相同。

如果您想要一个可行的示例,我发现这个可以准确显示您可以做什么:MVVM with F#

F# MVVM

如果您希望在同一个项目中拥有一个包含 F# 业务逻辑和 XAML 的整个应用程序,您可以下载以下扩展程序:Windows App in F#。通过在指令中指向 FSharp.ViewModule,你会没事的。

将处理所有 UI 逻辑的视图模型。继承视图模型 视图模型库

您还可以在here找到这类事情的工作样本

【讨论】:

  • 谢谢。但我实际上有兴趣将 XAML 文件添加到我的 F# 项目中。
  • @ScottNimrod 请参考我对我的回答的新更新
  • @ScottNimrod 扩展程序的当前状态是什么?
【解决方案2】:

“代码隐藏”文件在 F# 中不存在(缺少部分类),甚至在 C# 中也有很多人recommend keeping those files empty

您可以使用.LoadFromXaml 加载Xaml 文件并使用.FindByName<'t> 访问对象。见Wintellect sample。您需要将名称指定为字符串和类型,因此不存在编译时安全性。

它不像 WPF 那样干净,其中有一个类型提供程序 (FsXaml),它提供对对象的类型化访问。将来可能会出现 Xamarin Forms 的类型提供程序。

我个人更喜欢避免使用 Xaml 并在代码中做所有事情,其中​​所有内容都是键入的并且不依赖于字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-03
    • 2012-12-21
    相关资源
    最近更新 更多