我正在使用模板10,并希望我的启动画面看起来像这样:
我已经获得了循环进度条形控件Here,并通过此代码中的Grace Feng帮助获取了图像Link
现在我希望这个循环进度控制到我的启动画面,所以它看起来像上面的图像,但在扩展的启动画面链接教程中,他们通过画布显示它,我想通过Myprogress控制任何想法如何实现这一点控制在扩展的启动画面。如果我只是在splash.xaml中使用它,那么我的应用程序构建并启动但然后它挂起。但删除此控件它运行完美。任何帮助将不胜感激。 谢谢。
答案 0 :(得分:1)
但是在扩展的初始屏幕链接教程中,他们通过画布显示它,我想通过Myprogress控制任何想法如何在扩展的闪屏中实现此控件。
虽然它使用official document中的Canvas
来显示扩展初始屏幕的内容,但是不需要编码与文档完全相同的代码,文档中的代码仅用于示例。即使您不需要为扩展的启动画面创建新的空白页面,也可以创建UserControl
来执行此操作。
有关使用Extended Splash Screen in Template 10
的一些信息,请参阅Template10: a new template to create Universal Windows apps – The basics。
所以这是我的例子,我创建了一个名为UserControl
的{{1}}:
ExtendedSplash
后面的代码非常简单,只需处理循环进度条的TimeTikcer:
<Grid Background="#00b2f0">
<mycontrols:RoundProgressControl x:Name="ProgressControl" HorizontalAlignment="Center" VerticalAlignment="Center"
Size="300" LineWidth="8" Color="Orange" />
</Grid>
要使用此public sealed partial class ExtendedSplash : UserControl
{
private Timer TheTimer = null;
private object LockObject = new object();
private double ProgressAmount = 0;
public ExtendedSplash()
{
this.InitializeComponent();
this.Loaded += (sender, e) =>
{
TimerCallback tcb = HandleTimerTick;
TheTimer = new Timer(HandleTimerTick, null, 0, 30);
};
this.Unloaded += (sender, e) =>
{
lock (LockObject)
{
if (TheTimer != null)
TheTimer.Change(Timeout.Infinite, Timeout.Infinite);
TheTimer = null;
}
};
}
public void HandleTimerTick(Object state)
{
lock (LockObject)
{
ProgressControl.SetBarLength(ProgressAmount);
ProgressAmount += 0.006;
if (ProgressAmount > 1.5)
ProgressAmount = 0.0;
}
}
}
,您可以在App.xaml.cs文件代码中这样:
ExtendedSplash
我在上面提供的博客中解释了使用sealed partial class App : Template10.Common.BootStrapper
{
public App()
{
InitializeComponent();
SplashFactory = e => new ExtendedSplash();
}
public override async Task OnInitializeAsync(IActivatedEventArgs args)
{
await Task.CompletedTask;
}
public override async Task OnStartAsync(StartKind startKind, IActivatedEventArgs args)
{
await Task.Delay(TimeSpan.FromSeconds(6));
NavigationService.Navigate(typeof(Views.MainPage));
}
}
的原因。你可以找到我的sample here。
<强>更新强>
首先,这个错误代码不是我的代码,这是你提供的循环进度条。这是一个基于COM的API错误代码。错误消息非常明确:消息过滤器指示应用程序正忙。如你所说,&#34;当它处于挂机状态&#34;时,发生了这个错误。
一种处理此异常的简单方法,您可以添加&#34;尝试catch&#34;像这样的代码:
SplashFactory