【发布时间】:2015-02-17 04:15:58
【问题描述】:
终极目标
当用户单击Expand 按钮时,我希望WebContainerControl 是全屏的,被聚焦,不允许在ScrollViewer 中滚动,并重叠标题网格(带有后退按钮、页面标题、等等)
基本上,它应该就像在一个漂亮的照片查看应用程序中点击一张照片一样。展开至全屏,右上角有一个X 按钮,当您单击它时,它会返回到常规视图。
问题
因为它是WebView,我不能简单地将视图传递给弹出窗口(它给了我一个无效的 args 异常,因为当前的浏览会话不能通过引用传递......他们登录了一个站点,所以我认为这是不安全的)
我有一个带有 web 视图的 XAML 控件:
<UserControl x:Class="App.WebContainerControl">
<Grid x:Name="grdWebContainer">
<StackPanel>
<Button Click="btnExpandView_Click"/>
<WebView x:Name="wvSite"/>
</StackPanel>
</Grid>
</UserControl>
这是一个将被加载到的示例视图:
<Grid x:Name="grdMain">
<Grid.RowDefinitions>
<RowDefinition Height="140"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Title Grid -->
<Grid x:Name="grdTitleBar" Grid.Row="0">
<TextBlock Text="App Title"/>
</Grid>
<!-- Web Views -->
<Grid Grid.Row="1">
<ScrollViewer>
<StackPanel>
<controls:WebContainerControl x:Name="First Site"/>
<controls:WebContainerControl x:Name="Second Site"/>
</StackPanel>
</ScrollViewer>
</Grid>
</Grid>
我目前所拥有的
到目前为止,当他们按下Expand 按钮时,它使控件全屏显示(使用Current.Window.Bounds)
然后,我将按下按钮的事件传递给主视图:
private void OnAccount_Expanded(object sender, ExpandedEventArgs args) {
// Expanded button is pressed and control is made full screen
if (args.IsExpanded) {
// Hide titlebar
grdMain.RowDefinitions[0].Height = GridLength.Auto;
grdTitleBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
}
else {
// show titlebar again
GridLength gl = new GridLength(140);
grdMain.RowDefinitions[0].Height = gl;
grdTitleBar.Visibility = Windows.UI.Xaml.Visibility.Visible;
}
}
问题
现在,它可以全屏显示,但我仍然可以滚动。知道如何将ScrollViewer 设置为在控件上水平居中吗?如果有人对如何实现我的Ultimate Goal 有更好的想法,你会让我成为一个快乐的露营者! (记住,它不允许我传递我的控制权,只能操纵它)
【问题讨论】:
-
问题:做全屏后你不想让滚动你的意思是?@LeviFuller
标签: c# wpf xaml windows-store-apps winrt-xaml