5

ビューモデルクラスを備えたF#WPFアプリケーションがあります。XAMLでデータ型として使用するには、これらのクラスをパブリックにする必要があります。

問題は、F#型の再帰(および)を使用すると、従属型にアクセスできないように見えることです。または、アクセスできないように見えます。つまり、この例では次のようになります。

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を作成します。Barでも同じです。それらはすべて公開としてマークされています。XAML内からBarにアクセスできない理由に戸惑います。

アップデート2:解決しました。WPFは、区別された共用体を好みません。1つ以上の従属型は、識別された共用体を使用し、XAMLデータバインディングに使用されないようにします。

4

1 に答える 1

7

WPF は差別された組合を好みません。下位の型の 1 つ以上が判別共用体を使用しているため、XAML データ バインディングに使用できません。明らかではありませんが、それが問題でした。

于 2012-12-29T17:11:32.337 に答える