Windows phone 7 WP7开发:如何让程序等到EventHandler结束?
当我的视图需要LogoStation的值时,它返回null,因为我的程序尚未执行LoadStation\u Completed 我希望我的程序在继续之前等待LoadStation_完成 ThxWindows phone 7 WP7开发:如何让程序等到EventHandler结束?,windows-phone-7,windows-phone-7.1,Windows Phone 7,Windows Phone 7.1,当我的视图需要LogoStation的值时,它返回null,因为我的程序尚未执行LoadStation\u Completed 我希望我的程序在继续之前等待LoadStation_完成 Thx 通过使用属性设置器,您可以正确地使用NotifyPropertyChanged来告诉绑定到LogoStation的UI它已被更新。这意味着UI最初将不显示任何内容,然后在加载完成后显示图像 在没有看到视图代码的情况下,这里的内容看起来是正确的——除了Infos类没有继承INotifyPropertyCha
通过使用属性设置器,您可以正确地使用NotifyPropertyChanged来告诉绑定到LogoStation的UI它已被更新。这意味着UI最初将不显示任何内容,然后在加载完成后显示图像 在没有看到视图代码的情况下,这里的内容看起来是正确的——除了Infos类没有继承INotifyPropertyChanged之外。这意味着事件永远不会被发送
更新您的类定义,您就可以开始了。通过使用正确使用NotifyPropertyChanged的属性设置程序,告诉绑定到LogoStation的UI它已经更新。这意味着UI最初将不显示任何内容,然后在加载完成后显示图像。在看不到视图代码的情况下,这里的内容看起来是正确的。将要等待LoadStation\u Completed执行的程序部分放入InfoStation\u LoadCompleted回调中。@ChrisF:thx,但我认为我的财产没有改变work@MartinJames要将my properties Logostation放入InfoStation_LoadCompleted,您不想为这样的服务调用阻塞UI。有一个占位符图像,在进入页面之前加载图像,或者有一个非阻塞加载指示器
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));
}
}