所以我有一个Panorama控件,并使用以下模板以编程方式将PanoramaItems添加到控件中。
<UserControl>
<Grid x:Name="LayoutRoot">
<controls:PanoramaItem Name="sitePanoramaItem" Header="{Binding Name}">
<Controls:DockPanel VerticalAlignment="Stretch">
<StackPanel Orientation="Horizontal" Margin="0,10,0,0" Controls:DockPanel.Dock="Top">
<Image Source="../Images/action.png" Width="64" />
<TextBlock Text="{Binding Stats, Mode=TwoWay}" FontSize="45" Margin="15,0,0,0" />
</StackPanel>
<Grid x:Name="graphCanvas" HorizontalAlignment="Stretch" Margin="10,10,10,10"> </Grid>
</Controls:DockPanel>
</controls:PanoramaItem>
</Grid>
</UserControl>
当我点击graphCanvas
我想要做的是将graphCanvas
弹出并显示全屏,然后当我再次点击将其恢复到原来的位置时。我一直在这个网站和谷歌,找不到任何类似于我正在寻找的东西。
我仍然希望保持全景控制功能,以便graphCanvas
仍然是唯一可见的,但您可以循环浏览它们。目前我正在努力工作,我从DockPanel
中删除了网格,并在LayoutRoot
崩溃时将其直接放在sitePanoramaItem
中。然而,它不是全屏,因为全景名称仍然可见(我想我也可以隐藏它......)当我把graphCanvas
放回到他DockPanel
时,画布的大小全都搞砸了起来。
我希望有一种更简单的方法。
甚至可能吗?
答案 0 :(得分:2)
可以创建您描述的UI,但这并不简单。你在正确的轨道上,在代码中删除它并添加LayoutRoot并隐藏Panorama。但是你必须自己编写滚动行为的代码,这将非常棘手 - 特别是让它感觉到全景的方式。
您可以尝试的一个技巧实际上是在您的Panorama顶部层叠一个PivotControl并默认情况下将其折叠。同时编辑它的模板以删除所有默认内容,例如:删除标题控件,将边距设置为0等。然后,当您想要全屏显示时,可以从Panorama项中删除所有graphCanvases,并将它们添加到PivotControl中的新PivotItems。然后隐藏全景并显示数据透视表。这将为您提供免费的滚动功能和全屏幻觉。
说完所有我不确定我会推荐这个。更常见的方法是,当用户选择项目并处理其中的全屏方面时,可以简单地导航到另一个页面(可能再次使用Pivot控件进行滚动)。当您想要离开“全屏”模式时,只需返回第一页即可。使用这种方法可以更轻松地处理全屏状态的墓碑化。
答案 1 :(得分:1)
您可以尝试将graphCanvas设为一个页面并将其放在不同的XAML中。然后在您现在拥有graphCanvas的相同位置添加一个框架(例如将其命名为InnerFrame),并使用InnerFrame导航到该页面。单击框架后,您可以使用应用程序的RootFrame导航到graphCanvas页面。当您决定关闭它时,只需使用RootFrame导航回来。
希望它足够清楚:)
修改强> WP7中的导航与Silverlight 4中的标准导航非常相似,但它的限制性更强。只需在您的XAML中抛出一个PhoneApplicationFrame,就像这样:
<phone:PhoneApplicationFrame x:Name="Frame" />
这与Silverlight框架基本相同。默认情况下,您创建的所有页面都从PhoneApplicationPage继承,因此它们可以在框架中显示而无需任何更改。
您的整个应用程序实际上都在PhoneApplicationFrame上运行。如果您查看App类,您将看到:
public PhoneApplicationFrame RootFrame { get; private set; }
Here's the MSDN documentation for the navigation system on WP7