0

次のようなプロパティを持つアクティビティがあります(これらは適切な依存関係プロパティとして設定されているため、ここでは単純にしています)。

public List<MyType> TypeList { get; set; }
public Int32 Index { get; set; }
public MyType SelectedType { get; set; }

そしてこれを行う実行:

SelectedType = TypeList[Index];

TypeListとIndexは、他のアクティビティから設定した値です。SelectedTypeをアクティビティプロパティで何にも設定せず、実行時に設定させるだけです。

これで、SelectedTypeが適切に設定されていることがわかりました。別のアクティビティをポイントして、そこからいくつかの値を出力することもできます。ですから、私はその活動に何の問題もないことを確信しています。

ただし、次のような条件のifアクティビティがあります。

((MyActivity)GetActivityByName("activity1")).SelectedType != null

そしてそれはfalseと評価されます(SelectedTypeをnullとして評価したことを意味します)。そのアクティビティキャストが正しいことはかなり確信しています(私はいつもそのようなことをしています)。そうでない場合、SelectedTypeにアクセスしようとしたときにnull参照例外が発生しませんか?したがって、ここでは何も悪いことをしていないと確信していますが、何らかの理由で、SelectedTypeはその状態でnullになり、他の場所では発生しません。

アクティビティが実行される前に条件が評価されているように見えますが、ワークフローではアクティビティが条件のかなり前にあるため、なぜそうなるのかわかりません。

誰かがこれに光を当てることができますか?

4

1 に答える 1

0

どうやらそれは、アクティビティのクローンを作成するwhileループに関係しているようです。アクティビティプロパティをワークフロープロパティにバインドすることで修正しました。詳細については、ワークフローフォーラムに投稿したこの投稿を参照してください。

于 2010-09-02T20:33:51.337 に答える