c# - 使用 WebView 全屏制作 XAML 控件

标签 c# wpf xaml windows-store-apps winrt-xaml

终极目标

当用户单击 Expand 按钮时,我希望 WebContainerControl 为全屏,聚焦,不允许在 ScrollViewer 中滚动, 并重叠标题网格(与后退按钮、页面标题等)

基本上,它应该就像在漂亮的照片查看应用程序中单击照片一样。展开到全屏,在右上角有一个 X 按钮,当你点击它时,它会返回到常规 View 。

问题

因为它是一个 WebView,我不能简单地将 View 传递给弹出窗口(它给了我一个无效的 args 异常,因为当前浏览 session 不能通过引用传递......他们登录到一个站点,所以我认为它是不安全的)

我有一个带有 webview 的 XAML 控件:

<UserControl x:Class="App.WebContainerControl">
    <Grid x:Name="grdWebContainer">
        <StackPanel>
            <Button Click="btnExpandView_Click"/>
            <WebView x:Name="wvSite"/>
        </StackPanel>
    </Grid>
</UserControl>

这是一个示例 View ,它将被加载到:

<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 设置为在控件上水平居中吗?如果有人对如何实现我的最终目标有更好的想法,你会让我成为一个快乐的露营者! (记住,它不允许我传递我的控制权,只能操纵它)

最佳答案

如果我没看错,给你Scroll Viewer起个名字

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

当你做全屏时设置滚动条的可见性

  uiScroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;

关于c# - 使用 WebView 全屏制作 XAML 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554547/

相关文章:

c# - 在 C# 解决方案中从不同项目调用代码的最佳方式

c# - 如何合并具有特定移位(偏移)的两个位图?

c# - 设置通用 WPF 控件的样式

c# - MVVM:如何只将属性读入 ViewModel?

C# 将 REST 调用的响应写入文本文件

c# - 使用 TextBox 或 RichTextBox 显示图像文件中的原始数据?

wpf - 用 WPF 应用程序替换 Windows shell

sql-server - 批量插入时保留行顺序

wpf - CefSharp 网络摄像头不渲染

wpf - 如何防止根据条件选择 TreeViewItem