2013-02-14 48 views
3

我有页面,当我点击它的空白部分时,它会失去焦点。我试图把边框作为背景,但是当我点击它时,也会失去焦点。为什么会发生?为什么我的页面失去焦点?

我真正需要做的是,当用户打开AppBar或设置魅力

一些示例代码来演示该问题(看输出窗口)禁用的WebView:

XAML:

<Page 
    x:Name="Pagey" 
    x:Class="FocusTest.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:FocusTest" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" GotFocus="Focus" LostFocus="LoseFocus"> 

    <Grid x:Name="RootGrid" Background="{StaticResource ApplicationPageBackgroundThemeBrush}" GotFocus="Focus" LostFocus="LoseFocus"> 
     <StackPanel> 
      <Button x:Name="Clicky" Content="Clicky" GotFocus="Focus" LostFocus="LoseFocus" HorizontalAlignment="Center"></Button> 
      <Border x:Name="Border" Width="100" Height="100" Background="Red" GotFocus="Focus" LostFocus="LoseFocus"></Border> 
      <Button x:Name="Clicky2" Content="Clicky2" GotFocus="Focus" LostFocus="LoseFocus" HorizontalAlignment="Center"></Button> 
     </StackPanel> 
    </Grid> 
</Page> 

后面的代码:

using System.Diagnostics; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 

namespace FocusTest 
{ 
    public sealed partial class MainPage : Page 
    { 
     public MainPage() 
     { 
      this.InitializeComponent(); 
     } 

     void Focus(object sender, RoutedEventArgs e) 
     { 
      Debug.WriteLine("Focus({0})", (sender as FrameworkElement).Name); 
     } 

     void LoseFocus(object sender, RoutedEventArgs e) 
     { 
      Debug.WriteLine("LoseFocus({0})", (sender as FrameworkElement).Name); 
     } 
    } 
} 
+0

在网格焦点事件中删除。同样的: 2013-02-23 00:11:22

+0

没有区别。 – SBoss 2013-02-26 11:42:12

回答

1

看起来像你的Border正在RootGrid里面这样每次当你点击Border's tap event就会发生和LostFocus事件发生。

更好的是您可以在同一RootGrid上设置LostFocus事件。然后它可以正常工作。
请尝试。 谢谢。