如何检测当前所选PivotItem的标题上的点击

时间:2015-08-26 06:00:27

标签: c# xaml events windows-phone-8 windows-phone

我有一个Pivot控件。我想要一个特殊的行为 - 每当用户点击当前选择的PivotItem的标题时,我想对此作出反应。但是,当点击的标题不属于当前选定的枢轴项时,不会发生此反应。

我的计划如下:

为每个PivotItem创建一个自定义标头,并将其tap事件与处理程序关联:

<phone:PivotItem DataContext="{Binding}" ContentTemplate="{StaticResource MyTemplate}" Content="{Binding}" x:Name="itemA">
    <phone:PivotItem.Header>
        <TextBlock x:Name="headerA" Text="A" Tap = "HeaderA_Tapped"/>
    </phone:PivotItem.Header>
</phone:PivotItem>

在处理程序中,测试当前是否选择了轻敲项目,如果是,则做出反应:

protected void HeaderA_Tapped(object sender, GestureEventArgs e)
{
    if (mainPivot.SelectedItem.Equals(itemA))
    {
        //selected item is the same pivotItem that reported tapping event
        react();
    }
}

这看起来非常简单,但在尝试之后我发现只有选择更改事件后才会报告点击事件。在用户点击当前未选择的pivotItem标头的情况下,枢轴将相应地更改选择(我想要保留的默认行为),然后它才会报告点击事件。但是,这对我的代码来说太晚了,因为在那一刻,点击的标题和当前选择的项目已经相同。

有什么方法可以检测水龙头是否启动了选择更改?或者有没有办法恢复事件的顺序?我想目前WP事件模型将事件从Visual Tree的根部下拉到叶子 - &gt;因此Pivot可以更快地处理它,然后它才会转到标题TextBlock

2 个答案:

答案 0 :(得分:1)

我认为你应该跟踪Pivot SelectedIndex并使用Timer更新Selection_Changed事件中的SelectedIndex。 有些人认为是这样的:

int selectedIndex;
func Selection_ChangedEvent()
{
    //use a timer to update selectedIndex
    //something like: Timer.do(selectedIndex = Pivot.SelectedIndex, 100)
    //fire after a specify time. adjust this for the best result. 
}

在您的点击活动中

HeaderA_Tapped()
{
    if(selectedIndex == "index of item A in Pivot")
    {
        react();
    }
}

答案 1 :(得分:0)

创建Pivot选择已更改事件

<phone:Pivot Title="MY APPLICATION" x:Name="MainPivot" SelectionChanged="Pivot_SelectionChanged">

将事件处理程序添加到 cs 文件

private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    switch (MainPivot.SelectedIndex)
    {
        case 0:
            // do something
            break;
        case 1:
            //do something
            break;
    }
}

有关详细信息,请参阅此搜索 https://www.google.co.in/?gfe_rd=cr&ei=Y1XdVZruLqfG8AfUuquIAQ&gws_rd=ssl#q=wp8+c%23+pivot+selectionchanged

https://social.msdn.microsoft.com/forums/windowsapps/en-US/1baf74fa-0ddd-4226-a02d-a7fc9f80374d/pivot-static-header-like-twitter-app