2
だから私は誰かが私を助けてくれることを願っています。非同期コールバック内にプロパティが設定されていない
私は、WCF RIAサービスからいくつかのエンティティを取得するために以下のコードを持っています。これはSilverlight 4にありますが、私の推測では違いはありません。
私には何が欠けていますか?
public class MyModel
{
...
public IEnumerable<MyEntity> Result { get; private set; }
public void Execute()
{
Context.Load(Query, LoadBehavior.RefreshCurrent, o =>
{
if (o.HasError)
{
ExecuteException = o.Error;
if (ExecuteError != null)
ExecuteError(this, EventArgs.Empty);
o.MarkErrorAsHandled();
}
else
{
//I've stepped through the code and the assignment is working
//Result != null
Result = o.Entities;
if (ExecuteSuccess != null)
ExecuteSuccess(this, EventArgs.Empty);
//Inside any Handler of ExecuteSuccess
//MyModel.Result == null
//However I set a break point after ExecuteSuccess is triggered,
//and once again MyModel.Result != null
}
if (ExecuteComplete != null)
ExecuteComplete(this, EventArgs.Empty);
ExecuteBusy = false;
}, false);
}
}
私はこのポイントを取得するまで、すべてが動作します:
MyModel.ExecuteSuccess += (o,e) => {
//At this point MyModel.Result == null. but why?
var result = MyModel.Result;
};
なぜあなたがいるEventArgsにo.Entitiesを渡すことができることをExecuteSuccessように変化していませんか? – Sapph
これはこのシナリオでは機能しますが、私のビューでは 'MyModel.Result'にバインドします。 –
これが動作するかどうかわかりません。代わりに '(o as MyModel).Result'を試すことができますか? – decyclone