如何在数据透视表页面上放置应用程序栏?

时间:2014-07-14 08:30:41

标签: windows-phone-8

我正在学习Windows Phone 8.此时我并没有使用MVVM模式。我想在我的数据透视页面(声明为myPivotPage)中添加一个应用程序栏。我已经以编程方式将应用程序栏添加到PannormaPage(myPanoramaPage)。这很简单。我担心下面的代码:

   myApplicationBar = new ApplicationBar();
   myApplicationBar.IsMenuEnabled = true;
   myApplicationBar.IsVisible = true;

   addIconButton = new ApplicationBarIconButton();
   addIconButton.Text = "Add";
   addIconButton.IconUri = new Uri("/Assets/AppBar/add.png", UriKind.Relative);
   addIconButton.IsEnabled = true;

   MyPanoramaPage.ApplicationBar = myApplicationBar; // the important line of code

当我想将应用程序栏添加到数据透视页面时(仍以编程方式)我尝试在"重要的"注释行类似

   myPivotPage.ApplicationBar = myApplicationBar;

问题是myPivotPage对象不包含ApplicationBar的定义。我尝试从XAML代码中添加它并在后面的代码中使用它但到目前为止没有结果。

有什么想法吗? 先感谢您。

2 个答案:

答案 0 :(得分:1)

你可以这样做。据我所知,ApplicationBar与您的网页相关联,但Pivot只是您网页上的控件。 您可以通过在资源部分中定义不同的应用程序栏来实现:

<phone:PhoneApplicationPage.Resources> 

<shell:ApplicationBar x:Key="firstPivotTabApplicationBar" IsVisible="True"> 
    ...
</shell:ApplicationBar> 

<shell:ApplicationBar x:Key="firstPivotTabApplicationBar" IsVisible="True"> 
    ...
</shell:ApplicationBar> 

然后在您的数据透视控件的SelectionChanged事件中,您可以这样做:

private void MainPagePivot_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{
string pivot_Item;

switch (_mainPagePivot.SelectedIndex)
{
    case 0:
        pivot_Item= "firstPivotTabApplicationBar";
        break;

    case 1:
        pivot_Item= "secondPivotTabApplicationBar";
        break;

    default:
        throw new ArgumentOutOfRangeException();
}

ApplicationBar = (ApplicationBar)Resources[pivot_Item]; 
} 

您可以在此处参考更多信息:

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394036(v=vs.105).aspx

希望它有所帮助!

答案 1 :(得分:0)

ApplicationBar存在于程序的shell中。它存在于任何地方,但没有... ...

<spooky wind breeze blows by/>

为了在你加载的活动中创建一个新的ApplicationBar

请勿在{{1​​}}中创建....在XAML中执行此操作。

如果您关注C#,现在这是亵渎神明的。但是,有充分的理由。

如果您在MVVM中构建ApplicationBar,那么您将无法对其进行修改。如果你发生了爆炸。

XAML中构建它,就像我下面的示例一样,您将能够动态添加按钮,隐藏它等等。

C#