none
全景应用程序中如何在不同的页面使用不同的任务栏 RRS feed

  • 问题

  • 这是一款电台软件,想知道人家这个任务栏是怎么实现的,求指教

    提问的时候不让我发图片,只能发一个百度云链接了

    百度云:pan.baidu.com/s/1o6JRRBG

    软件实现了在不同的PanoramaItem页面加载不同的任务栏,而且还修改了任务栏button的数量

    求如何实现的

    2014年7月15日 12:40

答案

  • 你好。

    可以监听Panorama控件的SelectionChanged事件,判断当前的SelectedIndex来决定ApplicationBar的显示。

    这里是一个简单的例子:

    <phone:Panorama Title="Panorama" x:Name="panorama" SelectionChanged="panorama_SelectionChanged">
        <phone:PanoramaItem Header="AA" Background="Red"/>
        <phone:PanoramaItem Header="BB" Background="Green"/>
        <phone:PanoramaItem Header="CC" Background="Blue"/>
    </phone:Panorama>
    private void panorama_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        int selectedIndex = panorama.SelectedIndex;
        switch (selectedIndex)
        {
            case 0:
                ApplicationBar = new ApplicationBar();
                ApplicationBarIconButton appBarButtonA = new ApplicationBarIconButton(new Uri("/Assets/AlignmentGrid.png", UriKind.Relative));
                appBarButtonA.Text = "AA";
                ApplicationBar.Buttons.Add(appBarButtonA);
                break;
            case 1:
                ApplicationBar = new ApplicationBar();
                ApplicationBarIconButton appBarButtonB = new ApplicationBarIconButton(new Uri("/Assets/AlignmentGrid.png", UriKind.Relative));
                appBarButtonB.Text = "BB";
                ApplicationBar.Buttons.Add(appBarButtonB);
                break;
            case 2:
                ApplicationBar = new ApplicationBar();
                ApplicationBarIconButton appBarButtonC = new ApplicationBarIconButton(new Uri("/Assets/AlignmentGrid.png", UriKind.Relative));
                appBarButtonC.Text = "CC";
                ApplicationBar.Buttons.Add(appBarButtonC);
                break;
            default:
                break;
        }
    }

    例子里面,每一个PanoramaItem对应的ApplicationBar都不同。

    另外需要注意的是,SelectionChanged事件在Panorama初始化时不会触发,所以应在应用初始化时对默认的PanoramaItem设置ApplicationBar的显示。

    2014年7月16日 1:18

全部回复

  • 你好。

    可以监听Panorama控件的SelectionChanged事件,判断当前的SelectedIndex来决定ApplicationBar的显示。

    这里是一个简单的例子:

    <phone:Panorama Title="Panorama" x:Name="panorama" SelectionChanged="panorama_SelectionChanged">
        <phone:PanoramaItem Header="AA" Background="Red"/>
        <phone:PanoramaItem Header="BB" Background="Green"/>
        <phone:PanoramaItem Header="CC" Background="Blue"/>
    </phone:Panorama>
    private void panorama_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        int selectedIndex = panorama.SelectedIndex;
        switch (selectedIndex)
        {
            case 0:
                ApplicationBar = new ApplicationBar();
                ApplicationBarIconButton appBarButtonA = new ApplicationBarIconButton(new Uri("/Assets/AlignmentGrid.png", UriKind.Relative));
                appBarButtonA.Text = "AA";
                ApplicationBar.Buttons.Add(appBarButtonA);
                break;
            case 1:
                ApplicationBar = new ApplicationBar();
                ApplicationBarIconButton appBarButtonB = new ApplicationBarIconButton(new Uri("/Assets/AlignmentGrid.png", UriKind.Relative));
                appBarButtonB.Text = "BB";
                ApplicationBar.Buttons.Add(appBarButtonB);
                break;
            case 2:
                ApplicationBar = new ApplicationBar();
                ApplicationBarIconButton appBarButtonC = new ApplicationBarIconButton(new Uri("/Assets/AlignmentGrid.png", UriKind.Relative));
                appBarButtonC.Text = "CC";
                ApplicationBar.Buttons.Add(appBarButtonC);
                break;
            default:
                break;
        }
    }

    例子里面,每一个PanoramaItem对应的ApplicationBar都不同。

    另外需要注意的是,SelectionChanged事件在Panorama初始化时不会触发,所以应在应用初始化时对默认的PanoramaItem设置ApplicationBar的显示。

    2014年7月16日 1:18
  • 亲测,已解决!
    2014年7月16日 5:04