私はビューモデルクラスを持つF#WPFアプリケーションを持っています。これらのクラスは、データ型としてXAMLで使用するためには公開する必要があります。F#識別された共用体とWPFデータバインディング
問題は、F#型再帰(および)を使用すると、従属型にアクセスできないか、そうでないように見えるということです。つまり、この例では、
type Foo() =
member this.Bar = new Bar()
and Bar() =
member this.Foo = new Foo()
であり、バーはXAMLではアクセスできません。
私はFooにpublicとBarの接頭辞を付けようとしました。私はまた、同義語を作成しようとしました。これらの変更のどちらも問題を解決しませんでした。
これは実際にどのように動作するのですか、それとも私は「間違っていますか?それが動作する方法であれば、従属型(例ではBar)を公開することができますか?
ありがとうございます! :-)
更新1:より詳細な検査(dotPeek)では、アクセスは同じように見えます。 F#コンパイラは静的外部クラスFooとネストされたクラスFooを作成します。それはBarと同じです。彼らはすべて公開されています。今、私はなぜBarがXAML内からアクセスできないのか疑問に思っています。
更新2:解決済み。 WPFは差別化された共用体を好きではありません。 1つ以上の従属型が識別された共用体を使用し、それがXAMLデータバインディングに使用されないようにします。