2012-12-29 7 views
5

私はビューモデルクラスを持つ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データバインディングに使用されないようにします。

答えて

7

WPFは区別された共用体を好きではありません。 1つ以上の従属型が識別された共用体を使用し、それがXAMLデータバインディングに使用されないようにします。それほど明白ではないが、それが問題だった。

関連する問題