0

紳士。SilverlightプロジェクトのMainPage.xamlには次の定義があります。

<UserControl
xmlns:model="clr-namespace:Engine.Silverlight.Web.Views;assembly=Engine.Login.Model"
d:DataContext="{d:DesignInstance Type=model:DesignTimeModel, IsDesignTimeCreatable=True}">...

また、設計時のデータバインディングに使用されるEngine.Login.Modelプロジェクトのクラス(事前に初期化されたプロパティではすべて正常に機能しますが):

    public class DesignTimeModel : INotifyPropertyChanged
{
    public DesignTimeModel()
    {
        var d = Deployment.Current.Dispatcher;
        d.BeginInvoke(
            () =>
            {
                CacheClient c = new CacheClient();
                c.GetResourcesCompleted +=(s,e)=>
                    {
                        d.BeginInvoke(
                            () => this.Resources = e.Result);
                    };
                c.GetResourcesAsync();
            }
        );

残念ながら、WCF要求の完了後にSystem.ObjectDisposedExceptionが発生しました(最初のVSインスタンスプロセスにアタッチしてVSの別のインスタンスを使用してデバッグしようとしましたが、役に立ちません-同じエラー、追加情報はありません):

System.ObjectDisposedException
Cannot access a disposed object.
Object name: 'Dispatcher'.
   at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)

デザインモードではディスパッチャの動作が異なると思います。VS2010XAMLデザイナーでWCFを使用してデザイン時データを取得するための問題を解決する方法を教えてください。

4

1 に答える 1

0

まず、デザイン タイム クラスで WCF 呼び出しを行うことは、実際にはベスト プラクティスではないと思います。代わりに、静的なダミー データを配置する必要があります。

あなたの問題についてDeployment.Current.Dispatcherは、変数を指す代わりに直接使用してみてください。

于 2011-04-18T13:33:33.623 に答える