F#区分联合和WPF数据绑定

Ben*_*sen 5 wpf recursion f# class

我有一个带有视图模型类的F#WPF应用程序.这些类需要公开才能在XAML中用作数据类型.

问题是,当使用F#类型的递归(和)时,似乎无法访问从属类型 - 或者它们看起来不是.也就是说,给出这个例子:

type Foo () =

    member this.Bar = new Bar()

and Bar () =

    member this.Foo = new Foo()
Run Code Online (Sandbox Code Playgroud)

然后在XAML中无法访问Bar.

我试图用公共和Bar加上Foo的前缀.我也尝试创建一个同义词.这些变化都没有解决问题.

这真的是它的工作原理还是我"做错了"?如果它是它的工作方式,那么我可以强制下属类型(在示例中为Bar)是公共的吗?

谢谢!:-)

更新1:仔细检查(dotPeek),似乎访问是相同的.F#编译器创建一个静态外部类Foo和一个嵌套类Foo.Bar也是如此.它们都标记为公开.现在我很困惑为什么不能从XAML中访问Bar.

更新2:解决了.WPF不喜欢受歧视的工会.一个或多个从属类型使用有区别的联合,并防止它被用于XAML数据绑定.

Ben*_*sen 7

WPF不喜欢受歧视的工会.一个或多个从属类型使用有区别的联合,并防止它被用于XAML数据绑定.不太明显,但这就是问题所在.