2

为什么Visual Studio中有2个相同的图标?对Windows Phone 8应用程序中的相同图标文件感到困惑

如果键入:

<shell:ApplicationBarIconButton Text="new document" IconUri="" />,然后打开属性面板,开辟了ApplicationBarIconButton元素组合框,你会发现,这把梳子盒有一个add按钮和一个new按钮图标。当你看到两个图标 - 它们都是一样的。

但是为什么?

我知道,在上下文中,无论是新的,并添加,可以有不同的含义/执行不同的操作:

例如新可以创建一个新文档,而add可以附加一些东西/添加一些东西到当前打开的文档。

但是,如果这是推理 - 那么这两个图标应该不同,因为这可能会导致混淆,因为应用程序栏图标的默认状态设置为使图标的文本不可见,除非点击...到屏幕的右下角。因此,如果我在ApplicationBar菜单中同时有一个添加按钮和一个新按钮,并且处于默认状态,这可能会非常混乱,并会强制用户打开菜单以查看哪个按钮是哪个按钮。这与首先​​隐藏菜单栏文字的目的背道而驰,不是吗?

+0

我看不到'add'和'new'按钮。你正在使用哪个版本的Visual Studio?你能否包含屏幕截图 – 2013-03-18 17:20:05

+0

我正在使用Windows Phone的Visual Studio Express 2012。 – 2013-03-19 12:47:13

+1

我仍然没有看到两个按钮。 – 2013-03-20 15:13:35

回答

0

我尽量不花费大量宝贵的开发时间,试图找出微软为什么决定在开发环境中实现另一种默认图像的原因。作为开发者,我有责任选择我想要的程序的外观和感觉。

SDK中捆绑了很多标准图标可供选择。

C:\ Program Files文件(x86)的\微软的SDK \的Windows Phone \ 8.0 \图标\

此外,这里是某人可以创建自己的自定义应用程序栏。一种替代的按钮图标方法是继续使用New按钮的标准add.png图像,如果确实需要在同一应用程序栏上同时具有这两种操作,则使用Add按钮的check.png图像。

public partial class MyPage : PhoneApplicationPage 
{ 
    public MyPage() 
    { 
     InitializeComponent(); 

     BuildApplicationBar(); 
    } 

    private void BuildApplicationBar() 
    { 
     // Set the page's ApplicationBar to a new instance of ApplicationBar.  
     ApplicationBar = new ApplicationBar(); 

     ApplicationBar.Mode = ApplicationBarMode.Default; 
     ApplicationBar.IsVisible = true; 
     ApplicationBar.Opacity = 1.0; 
     ApplicationBar.IsMenuEnabled = true; 

     // Create new buttons 
     ApplicationBarIconButton AppBarAddButton = new ApplicationBarIconButton(new Uri("/Assets/check.png", UriKind.Relative)); 
     AppBarAddButton.Text = "Add"; 
     AppBarAddButton.Click += new EventHandler(AppBarAddButton_Click); 
     ApplicationBar.Buttons.Add(AppBarAddButton); 

     ApplicationBarIconButton AppBarNewButton = new ApplicationBarIconButton(new Uri("/Assets/add.png", UriKind.Relative)); 
     AppBarNewButton.Text = "New"; 
     AppBarNewButton.Click += new EventHandler(AppBarNewButton_Click); 
     ApplicationBar.Buttons.Add(AppBarNewButton); 
    } 

    private async void AppBarAddButton_Click(object sender, EventArgs e) 
    { 
     //TODO: Do something for the add click action 
    } 

    private async void AppBarNewButton_Click(object sender, EventArgs e) 
    { 
     //TODO: Do something for the new click action 
    } 
}