F#歧视工会和WPF数据绑定

F#歧视工会和WPF数据绑定,wpf,class,recursion,f#,Wpf,Class,Recursion,F#,我有一个带有视图模型类的F#WPF应用程序。这些类需要是公共的,以便在XAML中用作数据类型 问题在于,当使用F#类型递归(and)时,从属类型似乎是不可访问的——或者它们似乎不可访问。也就是说,在这个例子中: type Foo () = member this.Bar = new Bar() and Bar () = member this.Foo = new Foo() 那么,在XAML中无法访问Bar 我试着在Foo前面加上public和Bar。我还尝试创建一个同义

我有一个带有视图模型类的F#WPF应用程序。这些类需要是公共的,以便在XAML中用作数据类型

问题在于,当使用F#类型递归(and)时,从属类型似乎是不可访问的——或者它们似乎不可访问。也就是说,在这个例子中:

type Foo () =

    member this.Bar = new Bar()

and Bar () =

    member this.Foo = new Foo()
那么,在XAML中无法访问Bar

我试着在Foo前面加上public和Bar。我还尝试创建一个同义词。这些变化都没有解决问题

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

谢谢!:-)

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


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

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