繁忙的视图覆盖在窗体上。 WPF

时间:2011-11-18 15:21:50

标签: .net wpf

覆盖繁忙视图的最佳方法是什么,以便用户无法与表单进行交互?尝试了不同的方法,例如将边框图层放在窗体顶部,将背景设置为浅蓝色。同时将光标设置为Busy使用户无法进行交互。有没有可用的示例项目。

但这是问题所在。将Cursor设置为Busy我们无法与背面的表单进行交互,但如果通过Tab键(按Tab键),我们可以转到表单内的控件,然后与之交互。

以前有人遇到过这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

BusyIndicator是一个专用控件,可以为您完成所有这些操作。

答案 1 :(得分:1)

在构建包含其后面控件的叠加层的a custom Popup时,我遇到了同样的问题。我最终通过使UserControl成为自己的Focus Scope来解决它,并在触发期间禁用TabNavigation

<local:SomeBusyView FocusManager.IsFocusScope="True">
    <local:SomeBusyView.Style>
        <Style TargetType="{x:Type local:SomeBusyView}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsBusy}" Value="True">
                    <Setter Property="KeyboardNavigation.TabNavigation" Value="None" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </local:SomeBusyView.Style>
</local:SomeBusyView>