我有一个带有视图模型类的 F# WPF 应用程序。这些类需要公开才能在 XAML 中用作数据类型。
问题在于,当使用 F# 类型递归(和)时,从属类型似乎不可访问——或者它们似乎不可访问。也就是说,给出这个例子:
type Foo () =
member this.Bar = new Bar()
and Bar () =
member this.Foo = new Foo()
然后 Bar 在 XAML 中不可访问。
我也尝试在 Foo 前面加上 public 和 Bar 。我也尝试创建一个同义词。这些变化都没有解决问题。
这真的是它的工作原理还是我“做错了”?如果它是它的工作方式,那么我可以强制从属类型(在示例中为 Bar)公开吗?
谢谢!:-)
更新 1:仔细检查 (dotPeek) 似乎访问是相同的。F# 编译器创建一个静态外部类 Foo 和一个嵌套类 Foo。Bar 也是如此。它们都被标记为公开。现在我很困惑为什么不能从 XAML 中访问 Bar。
更新 2:已解决。WPF 不喜欢受歧视的工会。一种或多种从属类型使用有区别的联合,这会阻止它用于 XAML 数据绑定。