0

私のビューがLogoStationの値を必要とする場合、私のプログラムはまだLoadStation_Completedを実行していないため、nullを返します。

プログラムがLoadStation_Completedが実行されるのを待ってから続行したい。

どうも

public class Infos
{
    #region propriétés

    private DataServiceCollection<SyndicObject> _infosStation;
    public DataServiceCollection<SyndicObject> InfosStation
    {
        get
        {
            return _infosStation;
        }
        set
        {
            _infosStation = value;
        }
    }

    #endregion

    string nameStation;
    public event PropertyChangedEventHandler PropertyChanged;

    public void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this,
                new PropertyChangedEventArgs(propertyName));
        }
    }

    private ImageSource _logoStation;
    public ImageSource LogoStation
    {
        get
        {
            return _logoStation;
        }
        set
        {
            _logoStation = value;
            NotifyPropertyChanged("LogoStation");
        }
    }

    public Infos(string station)
    {
        nameStation = station;
        getInfos();
    }

    public void getInfos()
    {
        SyndicationContext service = new SyndicationContext(new Uri("http://test/817bee9d-faf4-4680-9d05-e41c2c90ae5a/"));

        IQueryable<SyndicObject> requete = (from objectSki in service.Objects
                                           where objectSki.NOMSTATION == nameStation
                                           select objectSki);

        Deployment.Current.Dispatcher.BeginInvoke(() =>
        {
            InfosStation = new DataServiceCollection<SyndicObject>();
            InfosStation.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(InfoStation_LoadCompleted);   
            InfosStation.LoadAsync(requete);
        }
        );
    }

    void InfoStation_LoadCompleted(object sender, LoadCompletedEventArgs e)
    {
        LogoStation = new BitmapImage(new Uri(@"http://test/upload/" + InfosStation[0].LOGO, UriKind.Absolute));
    }
}
4

1 に答える 1

0

プロパティセッターを使用することにより、NotifyPropertyChanged(正しく)使用して、UIにバインドされていることをUIに通知しLogoStationます。これは、UIが最初は何も表示せず、ロードが完了すると画像を表示することを意味します。

Infosビューコードが表示されない場合、クラスがから継承されていないという事実を除けば、ここにあるものは正しいように見えますINotifyPropertyChanged。これは、イベントが送信されないことを意味します。

クラス定義を更新すれば、準備は万端です。

于 2012-05-04T07:39:02.063 に答える