我正在学习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代码中添加它并在后面的代码中使用它但到目前为止没有结果。
有什么想法吗? 先感谢您。
答案 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#