可绑定属性是否实例化弹出控件?

时间:2012-09-15 21:40:48

标签: c# xaml controls windows-runtime inotifypropertychanged

我有一个MainPage和一个DetailPage。它们都使用静态类来接收数据。这个名为DataService的类实现了INotifyPropertyChanged接口,它实现了一个名为“IsLoading”的属性。每当调用DataService中的方法时,我都将IsLoading设置为true。 DataService本身包含在一个名为Globals的静态类中,它实例化DataService(我知道,我将使用单例模式实现它)

在MainPage上,它们是一个弹出窗口:

<Page.Resources>
  <Common:DataService x:Key="DataService" />
</Page.Resources>

<Popup IsOpen="{Binding IsLoading}" DataContext="{StaticResource DataService}">...</PopUp>

在MainPage上一切正常。如果DataService从Web服务请求某些内容,则会显示弹出窗口。如果完成,弹出窗口会隐藏。

如果我使用Frame.Navigate(typeof(DetailPage));进行更改并且DetailPage开始调用dataservice的某些方法,则弹出窗口也会显示,但不会显示在与主页面相同的页面上。它将显示在左上角。

有趣的是:如果我回到MainPage并加载数据,我会得到两个弹出窗口。如果我再次访问DetailPage,则会出现第三个弹出窗口,依此类推。似乎这个弹出窗口被实例化了?!

下一点:在OnNavigatingTo中设置Popup的DataContext并删除OnNavigatingFrom中的DataContext时,我将继续使用我想要的弹出窗口,并且没有第二个实例化。

这里出了什么问题?

0 个答案:

没有答案