用于打开新的 F# 和 FsXaml xaml windows

F# & FsXaml for opening new xaml windows

我正在学习 F#,发现使用 FsXaml 的 FsEmptyWindowsApp 对于为 f# 系统拼凑 UI 非常有用。我似乎无法克服的一个问题是从我的初创公司 MainWindow.xaml 打开一个新的 window。我在 FsXaml 中创建了一个 ChildWindow.xaml 并使用 XAML 提供程序创建了一个类型,但是当我

type MainView = XAML<"MainWindow.xaml", true>    
type ChildWindow = XAML<"ChildWindow.xaml",true>

type MainViewModel() as self = 
inherit ViewModelBase()

    ...        

    member x.NewChildWindowCommand = 
        new FunCommand ((fun action -> 
                        let cw = ChildWindow()
                        cw.Root.Activate() |> ignore
                       ),
                        (fun canExecute -> true))

当我 运行 命令说明 "cannot locate resource ChildWindow.xaml" 时,我总是得到一个错误,我把它放在上面的项目 MainWindow.xaml 中,它有自己的代码在后面并且总是得到,不能定位资源错误。

我尝试使用

手动加载xaml
Application.LoadComponent(new Uri("/<asseblyname>;component;/ChildWindow.xaml",UriKind.Relative))

但是关于无法定位资源的相同错误再次出现...

任何关于我应该如何在 FsEmptyWindowsApp 中使用 XAML 类型提供程序 (FxXaml) 打开新的 window 的帮助和解释将不胜感激。或者,如果有人知道如何使用 FsXaml 进行页面导航,那将非常有用。我已经下载了演示,但似乎没有一个涵盖 multi-paged/-windowed 个演示

我解决了这个问题,在新创建的 xaml 文件上,您需要进入属性并将构建操作设置为资源...现在一切正常,希望我早点解决这个问题几个星期以来一直在躲避我

在 FsXaml 2.x 中打开一个新的 window 可以这样完成:

type ChildWindow = XAML<"ChildWindow.xaml">

//somewhere in the code
ChildWindow().Show()  //open, don't wait

ChildWindow().ShowDialog()  //open and wait

解决方案文件 ChildWindow.xaml 应将生成操作设置为 'Resource'。