【问题标题】:Make XAML control with WebView full screen使用 WebView 全屏制作 XAML 控件
【发布时间】: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


【解决方案1】:

如果我理解得很好,请把名字放在你的滚动查看器上

<ScrollViewer Name="uiScroll" >
        ............
 </ScrollViewer >

当你对你的滚动条进行全屏设置时

  uiScroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;

【讨论】:

  • 假设用户在屏幕上有四个 WebControlContainers 并且他的屏幕居中在中间(两个控件之间),我仍然需要将 ScrollViewer 居中以便当控件全屏时,它没有显示它们仍在屏幕底部展开的底部。那只会将其锁定到位,对吗?
  • 您需要中心滚动查看器或滚动查看器内的控件吗?@LeviFuller
  • ScrollViewer 中的控件。顺便说一句,我非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多