我目前正在处理一个Xamarin.Forms项目,并试图创建一个带有图像的水平滚动视图.我希望图像的zoom 类似于Windows窗体中的PictureBoxSizeMode.Zoom行为.我try 了几种方法,包括在ScrollView中使用StackLayout,以及将Image元素上的AspectFill属性设置为AspectFill.

然而,无论我采取哪种方法,布局总是需要水平滚动.我想确保图像适合在可用空间内,而不需要滚动.

以下是我的XAML的简化版本:

<ScrollView HorizontalScrollBarVisibility="Always">
    <StackLayout x:Name="menuStack1" Orientation="Horizontal" WidthRequest="500">
        <Image Source="your_image.png" Aspect="AspectFill" HeightRequest="50" WidthRequest="50" />
        <Image Source="your_image.png" Aspect="AspectFill" HeightRequest="50" WidthRequest="50" />
        <!-- Add more Image elements as needed -->
    </StackLayout>
</ScrollView>

我try 了不同的WidthRequest值和图像大小,但问题仍然存在.我遗漏了什么?如何在不需要水平滚动的情况下实现所需的行为,即图像在可用空间内动态zoom ?

任何帮助或指导将不胜感激!先谢谢你了.

推荐答案

试试下面的代码:

    <StackLayout>
        <!-- First ScrollView with Button -->
        <StackLayout>
            <ScrollView Orientation="Horizontal">
                <StackLayout Orientation="Horizontal">
                    <Button Text="File" BackgroundColor="Transparent" TextColor="White" Clicked="Button_Clicked" TextTransform="None"/>
                </StackLayout>
            </ScrollView>
            <ScrollView Orientation="Horizontal">
                <StackLayout Orientation="Horizontal">
                    <ImageButton Source="C:/Users/user/Desktop/icon.png" HeightRequest="60" WidthRequest="60" Aspect="AspectFit" BackgroundColor="Transparent" Clicked="ImageButton_Clicked"/>
                </StackLayout>
            </ScrollView>
            <!-- Add more elements as needed -->
        </StackLayout>
    </StackLayout>

Csharp相关问答推荐

总是丢弃返回的任务和使方法puc无效之间有区别吗?

. net依赖注入如何避免服务类中的新

(乌龙)1&#比c#中的UL&#慢吗?

默认情况下,.NET通用主机(Host.CreateDefaultBuilder)中是否包含UseConsoleLifetime?

HttpConext.Request.Path和HttpConext.GetEndpoint()之间的差异

如何在实体框架中添加包含列表?

在ASP.NET Core Web API项目中通过中间件修改`Request.Path`不会更改使用的控制器/操作

在具有不同属性名称的两个类之间创建关系

UWP应用程序try 将打包的本机.exe文件加载为C#程序集

异步任务导致内存泄漏

在C#中反序列化/序列化具有混合元素顺序的XML时出现问题

关于扩展文件类C#的矛盾

使用System.Text.Json进行序列化时发生StackOverflow异常

.NET 8在appsettings.json中核心使用词典URI、URI&>

Postgres ENUM类型在第一次运行时对Dapper不可见

如何从非异步任务中正确返回TypeResult

.NET8Blazor-为什么Rapzor渲染在for循环之后显示?

.NET8支持Vector512,但为什么向量不能达到512位?

默认架构不存在EF核心迁移

C#、Visual Studio代码、调试器、错误处理变量请求.未知错误:0x80131502,