首页 > 解决方案 > 如何在 Uno WASM 中创建幻灯片?

问题描述

我正在尝试在我的 Uno 应用程序中创建一个简单的幻灯片。我在 UWP 中工作,但在 WASM 中失败。我的代码如下所示:

public void SlideShowPageLoaded(object sender, RoutedEventArgs args)
{          
    vm.URL = vm.SlideList[CurrentIndex].URL;
    timer = new DispatcherTimer();
    timer.Tick += dispatcherTimer_Tick;
    timer.Interval = new TimeSpan(0, 0, this.Interval);
    timer.Start();
} 

private void dispatcherTimer_Tick(object sender, object e)
{
    this.GetNextIndex();
    try
    {
        vm.URL = vm.SlideList[CurrentIndex].URL;
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }            
}

当页面加载时,我为我的图像设置 URL,然后创建一个 DispatchTimer。Tick 事件只是更改 URL。图像 xaml 如下所示:

<Image x:Name="imageControl" Source="{Binding URL, Mode=OneWay}" />  

这在 UWP 中运行良好,在 WASM 中没有任何反应。我猜不支持 DispatchTimer?我可以使用其他选项吗?

标签: uwpwebassemblyuno-platform

解决方案


问题解决了。我最初提供的信息不完整。SlideShowPage 由 Frame.Navigate 创建。在 UWP 工作的 UWP 实现中,首先调用 OnNavigateTo 事件,然后调用 SlideShowPageLoaded。在 WASM 上,SlideShowPageLoaded 在 OnNavigateTo 事件处理程序之前被调用,因此数据没有被初始化。

我重新配置了调用以在 OnNavigateTo 处理程序中初始化我的数据,并忽略了 SlideShowPageLoaded 事件以解决问题。


推荐阅读