gpt4 book ai didi

c# - 在页面之间导航期间显示 Progressring

转载 作者:太空宇宙 更新时间:2023-11-03 16:14:22 24 4
gpt4 key购买 nike

我的意图是,当用户单击一个按钮导航到另一个页面时,他将看到一个进度条,直到另一个页面完全加载为止。

我已经找到了很多关于这个主题的教程,但是它们都使用了代码隐藏。我希望能够不使用代码隐藏(如果可能)。我目前正在将 MvvmLight 与 ViewModelLocater 结合使用。

我已经在我的 View 中制作了一个可以显示 Progressring 的虚拟网格,并且我已将其事件和可见属性绑定(bind)到我的 View 模型。

<Grid  Background="Transparent" Visibility="{Binding LoadCircleVisibility}" Height="{Binding HeigthScreen}" Width="{Binding WidthScreen}" >
<ProgressRing Height="50" Width="50" IsActive="{Binding ProgressRingActive}" Visibility="{Binding ProgressRingVisibility}"></ProgressRing>
</Grid>

例如,当我从 wcf 服务获取数据时,我已经可以显示它了,但当用户导航到另一个页面时则不会。

此时我正在尝试通过消息传递来实现这一点,但我不确定应该将消息放在哪里才能使我的进度条可见。

我的消息将始终通过此方法为进度条设置正确的值:

private void ProggressBarVisible(bool visible)
{
if (visible)
{
ProgressRingVisibility = Visibility.Visible;
LoadCircleVisibility = Visibility.Visible;
}
else
{
ProgressRingVisibility = Visibility.Collapsed;
LoadCircleVisibility = Visibility.Collapsed;
}
ProgressRingActive = visible;
}

但是当我想导航到另一个页面时,没有进度条。

所以问题是如何在 mvvmlight 加载新页面时显示进度条。

编辑:部分解决方案:

我的导航速度较慢并锁定 uithread 的原因是它必须构建整个页面。我通过确保将所有方法和逻辑放入不同的线程来更改此设置,这确保我的 uithread 立即继续,并且我可以在第二个页面上显示负载循环,同时它正在执行逻辑和方法。

最佳答案

我不知道如何在没有代码隐藏的情况下做到这一点您可以将根面板添加到您的应用程序并将自定义控件放在那里。此自定义控件仅用于显示/隐藏预加载器。当您卸载第一页(或其他事件)时,您将显示自定义预加载器;当您完成第二页的下载后,您将隐藏自定义预加载器。

关于c# - 在页面之间导航期间显示 Progressring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16163389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com