0

我正在开发 Windows Phone 8 应用程序。我有两个页面,一个有一个应用程序栏,第二个有三个应用程序栏,根据情况隐藏和取消隐藏。除非我实施本地化,否则一切都是正确的。我按照以下链接在页面及其运行中应用了 ApplicationBar 中的本地化。但是,当我将相同的本地化方式应用到具有多个应用程序栏的第二页时,一切都失败了。没有任何应用程序栏可见。

我的代码根据这个链接点击这里查看链接

private void myfucntion()
{
     ApplicationBar = new ApplicationBar();
     ApplicationBarIconButton btnSortGridView = new ApplicationBarIconButton(new Uri("Images/grid.png", UriKind.Relative));
     btnSortGridView.Text = AppResources.library_gridview;
     ApplicationBar.Buttons.Add(btnSortGridView);
     btnSortGridView.Click += btnSortGridView_Click;
     ApplicationBarIconButton btnSortListView = new ApplicationBarIconButton(new Uri("/Images/list.png", UriKind.Relative));
     btnSortListView.Text = AppResources.library_listview;
     btnSortListView.Click += btnSortListView_Click;
     ApplicationBar.Buttons.Add(btnSortListView);
}

可以看到上面的 ApplicationBar 是 ApplicationBar() 的对象;当我按 F12 (参见定义)时,它重定向到我 PhoneApplicationPage [来自元数据] 并且以下属性被分配了相同的名称

public IApplicationBar ApplicationBar { get; set; }

所以想说,如果我有一个具有 localizatino 的 ApplicationBar,那么上面的方法将起作用,但如果我有多个 ApplicationBar,那么这种方法将不起作用。请帮我提出宝贵的建议。提前致谢。

4

1 回答 1

0

您可以通过为新变量创建新实例来完成创建第二个 ApplicationBar。当前,您的代码正在设置 ApplicationBar 的页面实例(如您的定义所见)。在您的代码中,将新实例分配给变量“secondBar”

private ApplicationBar CreateSecondBar()
{
    ApplicationBar secondBar = new ApplicationBar();
    ApplicationBarIconButton btnSortGridView = new ApplicationBarIconButton(new Uri("Images/grid.png", UriKind.Relative));
    btnSortGridView.Text = AppResources.library_gridview;
    btnSortGridView.Click += btnSortGridView_Click;
    secondBar.Buttons.Add(btnSortGridView);

    ApplicationBarIconButton btnSortListView = new ApplicationBarIconButton(new Uri("/Images/list.png", UriKind.Relative));
    btnSortListView.Text = AppResources.library_listview;
    btnSortListView.Click += btnSortListView_Click;
    secondBar.Buttons.Add(btnSortListView);

    return secondBar;
}

然后,当您想更改页面本身的 ApplicationBar 时,您可以调用该方法并从那里进行设置。

var secondBar = CreateSecondBar();
// maybe you store this in a member variable "_secondBar" to be used whenever you need it

// using the this keyword to distinguish between the property, and the class
this.ApplicationBar = secondBar;
于 2014-03-03T06:06:32.733 回答