我有以下简单的程序,在两个不同的页面之间来回切换帧的上下文。第一页只是一张照片,加载得很好,但第二页是一个框架,它被设置为实时天气雷达。 http://www.wunderground.com/auto/wxmap/IN/Carmel.html。当计时器将我的帧的上下文切换到天气雷达页面时,它只会开始加载并花费3-4秒的时间加载页面。在我创建页面并将其分配给_nextslide后,我检查了该框架的.Navigated事件,它几乎正好触发了,那么为什么我的框架等待直到页面显示为呈现网站?如果我能够显示网站完全加载,这将是完美的。框架需要加载一个网站之前页面显示
XAML:
<Page>
<Viewbox Stretch="Fill" Margin="15">
<Frame Height="800" Width="1280" Content="{Binding SlideFrame}"/>
</Viewbox>
</Page>
C#:
private Page _slideFrame;
private Page _nextFrame;
private DispatcherTimer _slideChangeTimer;
private int currentSlide = 1;
// Property
public Page SlideFrame
{
get { return _slideFrame; }
set
{
_slideFrame = value;
NotifyPropertyChanged("SlideFrame");
}
}
// ViewModel Constructor
public Page1ViewModel()
{
this.SlideFrame = new Slide1();
_nextFrame = new Slide2();
_slideChangeTimer = new DispatcherTimer();
_slideChangeTimer.Interval = TimeSpan.FromSeconds(8);
_slideChangeTimer.Tick += new EventHandler(SlideChange_Tick);
_slideChangeTimer.Start();
}
// 8 second timer event handler
private void SlideChange_Tick(object sender, EventArgs e)
{
if (currentSlide == 1)
{
this.SlideFrame = _nextFrame;
_nextFrame = new Slide1(false);
currentSlide = 2;
}
else
{
this.SlideFrame = _nextFrame;
_nextFrame = new Slide2();
currentSlide = 1;
}
}
我看不到你在哪里设置'Frame'的Source属性。那是晚些时候,还是你为了简洁而忽略它? – CodingGorilla
在SlideChange_Tick中,您是UI线程中的新SlideX。开始时,它将在UI线程上阻塞。它正在等待加载Slide2(),因为你_nextFrame = new Slide2();在Page1ViewModel中。 – Paparazzi
我从来没有设置帧的来源,而是通过绑定将上下文设置为页面。这使我可以将源设置为我在其他XAML文件中设置的不同页面。 – JonD