步骤: 当屏幕上显示MessageBox.Show时,用户锁定手机或按开始按钮,然后返回应用程序
按照上述步骤操作时,您将永远不会看到在开始上述步骤之前出现的消息框,而是手机将选择默认值,即使在“确定取消”选项中也是如此。会是什么情况以及如何解决?
答案 0 :(得分:1)
MessageBox在打开时支持主应用程序线程,当您按下锁定屏幕按钮时,应用程序,并且每个活动线程都在后台运行。主要活动应用程序线程被激活,内部生成的消息框线程没有。
VisualTreeHelper.GetOpenPopups();是您检查所有打开弹出窗口的方式。但最好和最一致的解决方案是使用自定义弹出窗口,在xaml中制作的消息框。它们永远不会成为阻止主UI线程的单独线程。
这样的自定义用户控件可以提供帮助
<Border Name="bdrLeave" Visibility="Collapsed">
<Border.Background>
<ImageBrush Stretch="Fill" ImageSource="/Images/LoderBackground.png"/>
</Border.Background>
<StackPanel>
<StackPanel>
<StackPanel.Background>
<ImageBrush Stretch="Fill" ImageSource="/Images/Backgrounds/Main_BG.jpg"/>
</StackPanel.Background>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock Text="Heading" HorizontalAlignment="Center" Foreground="#FF001C68" FontWeight="Bold" Margin="0,20,150,0"/>
<Button content="Close"/>
</StackPanel>
<TextBlock Text="Message" TextWrapping="Wrap" HorizontalAlignment="Center" Foreground="#FF001C68" Margin="0,20,0,0"/>
<StackPanel Margin="0,20,0,20" Orientation="Horizontal" HorizontalAlignment="Center">
<Button Content="Content" Width="130"/>
<Button Content="Content" width "130"/>
</StackPanel>
</StackPanel>
</StackPanel>
</Border>
答案 1 :(得分:1)
我认为唯一可以避免此问题的方法是创建一个自己的弹出视图作为消息框。