GridView LostFocus和GotFocus事件

时间:2016-07-20 05:14:55

标签: c# gridview windows-store-apps win-universal-app winrt-xaml

GridView GotFocusLostFocus似乎每次焦点从一个GridViewItem转移到另一个GridView时触发。有没有办法知道整个MyGridView.GotFocus += MyGridView_GotFocus; MyGridView.LostFocus += MyGridView_LostFocus; 什么时候收到并失去了焦点?

GridViewItem

以上事件MyGridView_GotFocus&每次焦点从MyGridView

中的for (NSInteger h = 0; h < detailArr.count; h++) { NSNumber *num = totalProductArr[h]; NSLog(@"text field text is %@", detailArr[num.integerValue]); } 移动到另一个时,都会触发MyGridView_LostFocus

1 个答案:

答案 0 :(得分:1)

  

有没有办法知道整个GridView什么时候收到并失去了焦点?

没有直接的方法可以做到这一点。我们只能使用变通方法来模仿这种行为。基本思路是,由于GotFocusLostFocus都是Routed Events,我们可以在网页根网格{{1}中模仿GridView的GotFocusLostFocus }和GotFocus事件。

这是XAML:

LostFocus

以下是代码:

<Grid Name="rootGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel Margin="100,50">
        <StackPanel VerticalAlignment="Center" >
            <GridView Name="myGridView"></GridView>
    </StackPanel>
        <TextBlock Name="myTb"></TextBlock>
        <GridView Name="myGridView2" ></GridView>
    <TextBlock Name="output">This is the OutPut Text: </TextBlock>
        <Button Name="btnFocus" >Focus Button</Button>
    </StackPanel>
</Grid>

正如您可以看到每次根网格得到关注。如果 PreviousFocusItem 不在 TargetGridView 中, CurrentFocusItem 位于 TargetGridView 中。这意味着 TargetGridView 整体上得到了关注。对于LostFocus,逻辑类似。

这是我的完整项目:GridViewFocusSample