如何自定义 MAUI 中 WebView 的滚动行为?

huangapple go评论119阅读模式
英文:

How to custom WebView scroll behavior in MAUI?

问题

我在一个ContentPage中开发了一个使用WebView呈现HTML内容和使用CollectionView呈现评论列表的应用程序。

伪代码如下:

<ContentPage>
    <ScrollView>
        <WebView x:Name="WebView" Source="{Binding Source}"></WebView>

        <CollectionView ItemsSource="{Binding Comments}"></CollectionView>
    </ScrollView>
</ContentPage>

我希望WebView和CollectionView共享相同的ScrollView。但是WebView中没有事件和属性。我不知道从哪里开始。

图示:

对不起,我没有明确问题,让我再解释一遍。

如何自定义 MAUI 中 WebView 的滚动行为?

这是我的原型,红色区域呈现HTML页面,灰色区域呈现带有评论的CollectionView,它们共享相同的黄色滚动条。

WebView始终将其高度拉伸到其内容,因此没有滚动条。

问题在于Maui中,我不知道如何禁用WebView的滚动事件。当我在WebView中点击时,无法触发滚动条。

谢谢。

英文:

I developed an app for rendering HTML content with WebView and comments list with CollectionView in a ContentPage.

the pseudo-code like this:

&lt;ContentPage&gt;
    &lt;ScrollView&gt;
        &lt;WebView x:Nam=&quot;WebView&quot; Source={Binding Source} &gt;&lt;/WebView&gt;

        &lt;CollectionView ItemsSource={Comments} &gt; &lt;/CollectionView&gt;
    &lt;/ScrollView&gt;

&lt;/ContentPage&gt;

I hope the WebView and CollectionView shared the same ScrollView. But there is no event and properties in WebView. I don't know where to start

=======

The illustration:

I'm sorry for not classifying the problem, let me illustrate it again.

如何自定义 MAUI 中 WebView 的滚动行为?

This is my prototype, the red zone renders an HTML page, and the grey zone renders a CollectionView with comments, they share the same
yellow scrollbar.

The WebView always stretches its height to its content, so there is no scrollbar.

The problem is in Maui, I don't know how to disable the web view scroll down/up event. when I tap in WebView, it can not trigger the scrollbar.

Thanks.

答案1

得分: 1

关于 ScrollView,您可以参考官方文档:ScrollView。文档中提到:

ScrollView 对象不应嵌套。此外,ScrollView 对象不应与其他提供滚动功能的控件嵌套,如 CollectionViewListViewWebView

但是,您可以将 WebView 和 CollectionView 放入 StackLayout 中。StackLayout 通常是 ScrollView 的子元素。

<ScrollView>
    <StackLayout>
        <WebView Source="https://learn.microsoft.com/dotnet/maui"/>

        <CollectionView x:Name="coll" >
            <CollectionView.ItemsSource>
                <x:Array Type="{x:Type x:String}" x:Name="nn">
                    <x:String>mono</x:String>
                    <x:String>monodroid</x:String>
                    <x:String>monotouch</x:String>
                    <x:String>monorail</x:String>
                    <x:String>monodevelop</x:String>
                    <x:String>monotone</x:String>
                    <x:String>monopoly</x:String>
                    <x:String>monomodal</x:String>
                    <x:String>mononucleosis</x:String>
                </x:Array>
            </CollectionView.ItemsSource>
        </CollectionView>
    </StackLayout>
</ScrollView>

将 ScrollView 用作根布局

英文:

For ScrollView you can refer to the official doc: ScrollView. It said that:

> ScrollView objects should not be nested. In addition, ScrollView objects should not be nested with other controls that provide scrolling, such as CollectionView, ListView, and WebView.

However, you can put WebView and CollectionView into StackLayout. A StackLayout will often be the child of a ScrollView.

&lt;ScrollView&gt;
    &lt;StackLayout&gt;
        &lt;WebView Source=&quot;https://learn.microsoft.com/dotnet/maui&quot;/&gt;

        &lt;CollectionView x:Name=&quot;coll&quot; &gt;
            &lt;CollectionView.ItemsSource&gt;
                &lt;x:Array Type=&quot;{x:Type x:String}&quot; x:Name=&quot;nn&quot;&gt;
                    &lt;x:String&gt;mono&lt;/x:String&gt;
                    &lt;x:String&gt;monodroid&lt;/x:String&gt;
                    &lt;x:String&gt;monotouch&lt;/x:String&gt;
                    &lt;x:String&gt;monorail&lt;/x:String&gt;
                    &lt;x:String&gt;monodevelop&lt;/x:String&gt;
                    &lt;x:String&gt;monotone&lt;/x:String&gt;
                    &lt;x:String&gt;monopoly&lt;/x:String&gt;
                    &lt;x:String&gt;monomodal&lt;/x:String&gt;
                    &lt;x:String&gt;mononucleosis&lt;/x:String&gt;
                &lt;/x:Array&gt;
            &lt;/CollectionView.ItemsSource&gt;
        &lt;/CollectionView&gt;
    &lt;/StackLayout&gt;
&lt;/ScrollView&gt;

ScrollView as a root layout.

huangapple
  • 本文由 发表于 2023年7月17日 16:36:26
  • 转载请务必保留本文链接:https://go.coder-hub.com/76702732.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定