如何判断选择了哪个HubSection

时间:2014-05-08 17:50:59

标签: windows-runtime winrt-xaml windows-phone-8.1

当用户更改Hub控件中的视图时,我需要更改AppBar的内容。

我在使用Pivot控件时的方式是侦听SelectionChanged事件并响应SelectIndex值。

但是,集线器只有一个SectionsInViewChanged事件,它返回多个部分的集合。通常,一个用户与之相互作用,然后是相邻的几乎不可见的部分。

所以我的问题是,如何判断哪个部分是当前突出显示给用户的部分(因此我可以相应地更改AppBar图标)?

1 个答案:

答案 0 :(得分:13)

在Hub控制中,我们可以收听SectionsInViewChanged事件。我们可以通过以下方式获得显示在屏幕上的HubSection:

var section = hubDemo.SectionsInView[0];

hubDemo是我的Hub控件的名称。我们可以为每个HubSection设置Tag属性。例如:

<Hub x:Name="hubDemo" SectionsInViewChanged="demoHub_SectionsInViewChanged">
    <HubSection Tag="0" Header="Section1" Width="800"/>
    <HubSection Tag="1" Header="Section2" Width="400"/>
    <HubSection Tag="2" Header="Section3" Width="400"/>
    <HubSection Tag="3" Header="Section4" Width="400"/>
    <HubSection Tag="4" Header="Section5" Width="600"/>
</Hub>

因此我们可以通过标记更改AppBar内容:

private void demoHub_SectionsInViewChanged(object sender, SectionsInViewChangedEventArgs e)
{
    var section = hubDemo.SectionsInView[0];
    var tag = section.Tag.ToString();
    switch (tag)
    {
        // Change your AppBar by tag
    }
}