【发布时间】:2012-06-05 07:06:32
【问题描述】:
我正在尝试检测用户当前打开的当前全景项目,然后相应地切换应用程序栏图标按钮的启用属性。我对如何实现这样的功能或正确检测当前的全景项目没有任何运气。具体来说,我想使用 selectedItem 属性并检测全景项目的名称而不是 selectedIndex 属性,因为全景项目可能会更改它们的顺序。有没有办法做到这一点?到目前为止,我拥有以下内容:
MainPage.xaml
<controls:Panorama SelectionChanged="PanoramaItemSelectionChanged">
<!--Panorama item one-->
<controls:PanoramaItem Header="statuses" >
...
</controls:PanoramaItem>
<!--Panorama item two-->
<controls:PanoramaItem Header="mentions" >
...
</controls:PanoramaItem>
<!--Panorama item three-->
<controls:PanoramaItem Header="messages" >
...
</controls:PanoramaItem>
<!--Panorama item four-->
<controls:PanoramaItem Header="favorites" >
...
</controls:PanoramaItem>
</controls:Panorama>
MainPage.xaml.cs
private void PanoramaItemSelectionChanged(object sender, SelectionChangedEventArgs e)
{
string currentPanoramaItem = e.AddedItems[0] as string;
switch (currentPanoramaItem)
{
case "statuses":
//show application bar button?
break;
case "mentions":
//show application bar button?
break;
case "messages":
((ApplicationBarIconButton)ApplicationBar.Buttons[0]).IsEnabled = true;
break;
case "favorites":
//show application bar button?
break;
default:
return;
}
}
我的 SelectionChanged 实现由于某种原因无法正常工作。有什么想法(请举个例子)?
【问题讨论】:
-
尝试字符串 currentPanormaItem = ((Panorama)sender).SelelctedItem.Header;
-
@BigL 不幸的是,这也不起作用。 Header 不是 SelectedItem 的选项。
-
在此之前您必须将 SelectedItem 转换为 PanoramaItem:
((PanoramaItem)(((Panorama)sender).SelectedItem)).Header -
是的,我现在看到 SelectedItem 是一个对象,尝试将其转换为 PanoramaItem,然后它应该可以工作
标签: c# windows-phone-7 xaml