在我的WPF应用程序中,当用户单击按钮时会激活某些耗时的操作。我想要做的是,向用户显示一个类似于等待光标的模态框,就像它完成一个Web应用程序一样,以指示该过程在后台进行。我有什么样的控制来实现这个目标?
答案 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>
Grid
,ContentControl (TheContainer)
和另一个Border (TheCover)
。然后我有一个ContentControl (TheModal)
来检查DataTrigger
上的Modal
属性的值,如果它的值是null,它会将TheCover和TheModal的可见性更改为可见。封面只是一个半透明的边框控件,可以阻止用户单击主NavPage中的控件。
希望这可以帮助你,或者你可以简单地使用上面提到的BusyIndicator,我从来没有自己使用它,所以不能在那里给你任何输入。如果您决定采用这种方式并需要帮助,那么现在让我为您提供更多代码。