wpf - F# 可区分联合和 WPF 数据绑定(bind)

标签 wpf class recursion f#

我有一个带有 View 模型类的 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 数据绑定(bind)。

最佳答案

WPF 不喜欢受歧视的工会。一种或多种从属类型使用有区别的联合,这会阻止它用于 XAML 数据绑定(bind)。不是很明显,但这就是问题所在。

关于wpf - F# 可区分联合和 WPF 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083779/

相关文章:

javascript - 在递归函数调用之前使用 return 子句与不使用 return 子句有何不同?

wpf - 为什么绑定(bind)更新而不实现 INotifyPropertyChanged?

c# - 基于窗口宽度的控件宽度

c# - 资源字典中的 Wpf 数据绑定(bind)

c++ - 模板参数作为函数未命名参数

php - 如果类存在,用 php 删除 div

c# - 从 WebForms 过渡到 WinForms

java - 为什么这个静态嵌套类不能在一台计算机上的 Java 中运行?

Javascript:如何使变量 "private"仅用于当前递归层?

recursion - 使用嵌套对象时,如何在 AngularJS 中制作递归模板?