2013-10-10 77 views
2

步骤: 当屏幕MessageBox.Show,用户锁定了他的电话或按下启动按钮,然后再回来到应用程序的Windows Phone 8的消息框问题

当上述步骤之后,你将永远看到在开始上述过程之前出现的信息框,而不是手机将选择默认值即使在确定取消选项中也是OK。会是怎样的情况,我将如何解决它?

+0

尝试此'VisualTreeHelper.GetOpenPopups();'同时重新激活您的应用程序。这可能会帮助你 –

+0

我应该在哪里复制这个?这是MessageBox.Show,它工作吗? – gayan1991

+0

@MohamedThaufeeq - 如果您提出了一个答案,请将其作为*答案*而不是*评论*。 –

回答

1

我认为只是为了避免这个问题的方法是创建自己的弹出视图作为一个消息框。

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> 
+0

作者:你给我举一个如何从xaml创建自定义消息框的例子..? – gayan1991

+0

我在这里更新我的答案 –

+0

是的谢谢。请原谅我的无知,但我对如何制作这些用户控件事件以及如何将它们与调用此用户控件的页面链接起来存在很多疑问(在messageBox中,我们得到一个事件,如果他按下ok做到这一点,如果他按取消,不这样做或其他)。 – gayan1991