如何在WPF应用程序上添加类似等待光标的模态框

时间:2011-08-19 13:37:51

标签: wpf c#-3.0 time-wait

在我的WPF应用程序中,当用户单击按钮时会激活某些耗时的操作。我想要做的是,向用户显示一个类似于等待光标的模态框,就像它完成一个Web应用程序一样,以指示该过程在后台进行。我有什么样的控制来实现这个目标?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

你在这里看的不多。我不确定您是如何设计应用程序的,但对于我自己,我创建了一个扩展NavPage类的类UserControl,其属性Modal的类型为{{ 1}}和NavPage事件。

所以基本上我的Close控件允许我托管其他NavPage控件作为其中的模态。 Close函数只关闭Page。

以下是我的模板查找NavPag控件的方式。

NavPage

所以基本上我只有<ControlTemplate x:Key="Fx_NavPage_ControlTemplate" TargetType="{x:Type fx:NavPage}"> <Grid> <Border x:Name="TheContainer" CornerRadius="{TemplateBinding CornerRadius}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"> <ContentControl Content="{TemplateBinding Content}" /> </Border> <Border x:Name="TheCover" CornerRadius="{TemplateBinding CornerRadius}" Background="#20000000" Visibility="Collapsed" /> <ContentControl x:Name="TheModal" Content="{TemplateBinding Modal}" Visibility="Collapsed" /> </Grid> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding Modal, RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource IsNullConverter}}" Value="False"> <Setter TargetName="TheCover" Property="Visibility" Value="Visible" /> <Setter TargetName="TheModal" Property="Visibility" Value="Visible" /> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> GridContentControl (TheContainer)和另一个Border (TheCover)。然后我有一个ContentControl (TheModal)来检查DataTrigger上的Modal属性的值,如果它的值是null,它会将TheCover和TheModal的可见性更改为可见。封面只是一个半透明的边框控件,可以阻止用户单击主NavPage中的控件。

希望这可以帮助你,或者你可以简单地使用上面提到的BusyIndi​​cator,我从来没有自己使用它,所以不能在那里给你任何输入。如果您决定采用这种方式并需要帮助,那么现在让我为您提供更多代码。