嘿 我有一个基于Prism4的WPF应用程序。执行慢速操作时,我想显示一个忙碌的屏幕。我将拥有大量的屏幕,因此我尝试在框架中构建一个解决方案,而不是将忙碌指示符添加到每个屏幕。
这些长时间运行的操作在后台线程中运行。这允许UI更新(好)但不会阻止用户使用UI(坏)。我想要做的是用一个旋转拨号的东西覆盖一个控件,并让控件覆盖整个屏幕(旧的HTML技巧与DIV)。当应用程序繁忙时,控件将显示,从而阻止任何进一步的交互以及显示spinny事物。
为了设置它,我想我可以将我的应用程序屏幕放在画布上以及spinny事物(使用更大的ZIndex)然后根据需要使spinny事物可见。
然而,这变得越来越难了。画布似乎没有很好的设置,我想我可能会咆哮错误的树。我将不胜感激任何帮助。感谢。
答案 0 :(得分:13)
我用一些程序完成了这个。简而言之:
(对于MVVM来说这是最简单的。自从我将codebehid用于这样的事情已经很久了,我真的不能说是否有一个很好的方法来实现它。)
科里
编辑:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Grid>
<Border BorderBrush="Black" BorderThickness="1" Background="#80000000" Visibility="Collapsed">
<Grid>
<TextBlock Margin="0" TextWrapping="Wrap" Text="Busy...Please Wait" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="26.667" FontWeight="Bold" Foreground="#7EFFFFFF"/>
</Grid>
</Border>
<DockPanel x:Name="LayoutRoot">
<CheckBox Content="CheckBox" VerticalAlignment="Top"/>
<TextBlock TextWrapping="Wrap"><Run Text="TextBlock"/></TextBlock>
<UserControl x:Name="ViewViewView"/>
</DockPanel>
</Grid>
答案 1 :(得分:3)
使用繁忙指示器查看此WPF工具包:https://github.com/xceedsoftware/wpftoolkit/wiki/BusyIndicator