我知道我可以用FSharp.ViewModule或FSharp.Desktop.UI构建一个WPF应用程序.在这种情况下,我正在尝试在C#中构建GUI部分并从F#访问它.我可以从F#启动C#应用程序,它显示MainWindow但是我无法从代码访问它的任何控件.我如何参考此表单上的按钮(名称:按钮)?MainWindow或App在我的初始设置中不显示它.
C#View只是一个带有Button的MainWindow.

F#代码是这样的:
open System
open WpfView
[<STAThread>]
do
let app = App()
let win = MainWindow()
app.Run(win) |> ignore
Run Code Online (Sandbox Code Playgroud)
WPF上的控件是"内部".也就是说,它们仅对同一程序集中的代码可见.
您的F#和C#代码位于单独的程序集中,因此您的F#代码无法访问C#代码中的类的内部成员.
控件由xaml编译器自动生成,因此您无法直接更改它们,但是一个简单的修复方法是在C#类中创建访问内部属性的公共访问方法和/或属性.
此外,虽然你可能有理由构建你的代码,你有办法,这可能是更好的有主入口点与WPF代码沿C#程序集的应用程序,并且具有参考在F#组装你的逻辑.这样,您可以使用数据绑定绑定到您在F#中编写的模型.