none
询问:关于appbar代码复用的一个问题 RRS feed

  • 问题

  • 我在mainpage里用C#生成了一个appbar,到了第二个页面也需要这个appbar了,除了简单的把代码复制粘贴过去,如何做才可以达到代码复用的目的?

    我知道可以把AppBar定义到Resources里去来达到复用的目的,

    但是代码生成的appbar在C#里如何复用?


    Microsoft forever!

    2012年4月22日 4:13

答案

  • 首先,你可以创建一个APPBAR使用Code:

    public MainPage()
    {
        InitializeComponent();
    
        ApplicationBar = new ApplicationBar();
    
        ApplicationBar.Mode = ApplicationBarMode.Default;
        ApplicationBar.Opacity = 1.0; 
        ApplicationBar.IsVisible = true;
        ApplicationBar.IsMenuEnabled = true;
    
        ApplicationBarIconButton button1 = new ApplicationBarIconButton();
        button1.IconUri = new Uri("/Images/YourImage.png", UriKind.Relative);
        button1.Text = "button 1";
        ApplicationBar.Buttons.Add(button1);
    
        ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem();
        menuItem1.Text = "menu item 1";
        ApplicationBar.MenuItems.Add(menuItem1);
    }

    因为每个页面本身自带一个APPBAR所以你只要设定它的属性即可,所以,你就建立一个改变APPBAR的工厂,如下:

            public static ApplicationBar NewAppBar()
            {
                ApplicationBar appBar = new ApplicationBar();
    
                appBar.Mode = ApplicationBarMode.Default;
                appBar.Opacity = 1.0;
                appBar.IsVisible = true;
                appBar.IsMenuEnabled = true;
    
                ApplicationBarIconButton button1 = new ApplicationBarIconButton();
                button1.IconUri = new Uri("/Images/YourImage.png", UriKind.Relative);
                button1.Text = "button 1";
                appBar.Buttons.Add(button1);
    
                ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem();
                menuItem1.Text = "menu item 1";
                appBar.MenuItems.Add(menuItem1);
                return appBar;
            }
        }
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
                ApplicationBar =PhoneApp39.AppBarFactory.NewAppBar();
            }
        }

    • 已标记为答案 Otomii Lu 2012年5月4日 3:12
    2012年4月26日 5:34
  • 全局ApplicationBar
    • 已标记为答案 Otomii Lu 2012年5月4日 3:12
    2012年4月26日 10:32

全部回复

  • 你好,

    你可以建立一个工厂方法,然后使用工厂方法生成一个AppBar实例.

    2012年4月23日 4:56
  • 还能给个例子啊 - -

    Microsoft forever!

    2012年4月26日 3:35
  • 首先,你可以创建一个APPBAR使用Code:

    public MainPage()
    {
        InitializeComponent();
    
        ApplicationBar = new ApplicationBar();
    
        ApplicationBar.Mode = ApplicationBarMode.Default;
        ApplicationBar.Opacity = 1.0; 
        ApplicationBar.IsVisible = true;
        ApplicationBar.IsMenuEnabled = true;
    
        ApplicationBarIconButton button1 = new ApplicationBarIconButton();
        button1.IconUri = new Uri("/Images/YourImage.png", UriKind.Relative);
        button1.Text = "button 1";
        ApplicationBar.Buttons.Add(button1);
    
        ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem();
        menuItem1.Text = "menu item 1";
        ApplicationBar.MenuItems.Add(menuItem1);
    }

    因为每个页面本身自带一个APPBAR所以你只要设定它的属性即可,所以,你就建立一个改变APPBAR的工厂,如下:

            public static ApplicationBar NewAppBar()
            {
                ApplicationBar appBar = new ApplicationBar();
    
                appBar.Mode = ApplicationBarMode.Default;
                appBar.Opacity = 1.0;
                appBar.IsVisible = true;
                appBar.IsMenuEnabled = true;
    
                ApplicationBarIconButton button1 = new ApplicationBarIconButton();
                button1.IconUri = new Uri("/Images/YourImage.png", UriKind.Relative);
                button1.Text = "button 1";
                appBar.Buttons.Add(button1);
    
                ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem();
                menuItem1.Text = "menu item 1";
                appBar.MenuItems.Add(menuItem1);
                return appBar;
            }
        }
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
                ApplicationBar =PhoneApp39.AppBarFactory.NewAppBar();
            }
        }

    • 已标记为答案 Otomii Lu 2012年5月4日 3:12
    2012年4月26日 5:34
  • 全局ApplicationBar
    • 已标记为答案 Otomii Lu 2012年5月4日 3:12
    2012年4月26日 10:32
  • 全局菜单栏是在App.xaml里设置的,具体可以参照:

    http://silverlightchina.net/html/zhuantixilie/winphone7/2012/0104/13092.html

    2012年4月27日 1:17