首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义框架不接受毛伊岛的高度请求

自定义框架不接受毛伊岛的高度请求
EN

Stack Overflow用户
提问于 2022-11-23 15:41:10
回答 1查看 25关注 0票数 0

我正在将我的Xamarin表单应用程序转换为.NET MAUI。

我正在尝试将自定义呈现器从Xamarin迁移到MAUI,下面是在.NET MAUI中使用自定义渲染器链接。

这是我的密码:

代码语言:javascript
复制
public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .UseMauiCompatibility()
             .ConfigureMauiHandlers(handlers =>
             {
                 handlers.AddCompatibilityRenderer(typeof(CustomFrame), typeof(CustomShadowFrameRenderer));
             });
            
        return builder.Build();
    }

CustomFrame:

代码语言:javascript
复制
public class CustomFrame : Frame
    {
        public CustomFrame()
        {
            
        }
       
    }

下面是自定义渲染器类

代码语言:javascript
复制
 public class CustomShadowFrameRenderer : FrameRenderer
    {

        public CustomShadowFrameRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
        {
            base.OnElementChanged(e);
            if (e.NewElement != null && e.OldElement == null)
            {
                e.NewElement.HeightRequest = 1000;
                e.NewElement.VerticalOptions = LayoutOptions.FillAndExpand;
            }
        }
代码语言:javascript
复制
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp1.MainPage" BackgroundColor="Red"
             xmlns:local="clr-namespace:MauiApp1.Controls">
    <local:CustomFrame BackgroundColor="Blue" HeightRequest="1000" Padding="20">
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Label
                Text="Hello, World!"
                SemanticProperties.HeadingLevel="Level1"
                FontSize="32"
                HorizontalOptions="Center" />

            <Label
                Text="Welcome to .NET Multi-platform App UI"
                SemanticProperties.HeadingLevel="Level2"
                SemanticProperties.Description="Welcome to dot net Multi platform App U I"
                FontSize="18"
                HorizontalOptions="Center" />

            <Button
                x:Name="CounterBtn"
                Text="Click me"
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Center" />

        </VerticalStackLayout>
    </local:CustomFrame>
</ContentPage>

框架不接受毛伊岛的高度要求,但同样的作品在Xamarin形式下也很好。

下面是相同的图片

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-24 02:23:21

我创建了一个示例来测试您的代码,并遇到了同样的问题。此外,我甚至不能点击CustomFrmae中的按钮。在毛伊河中,FrameRender似乎存在一些兼容性问题。

因此,我尝试将CustomRender更改为CustomHandler。它运行得很好,您只需更改两个位置代码即可。

  1. 在CustomShadowFrameRenderer类中,将其设置为public class CustomShadowFrameRenderer : Microsoft.Maui.Controls.Handlers.Compatibility.FrameRenderer
  2. 在MauiProgram.cs中:
代码语言:javascript
复制
var builder = MauiApp.CreateBuilder();
            builder
             .UseMauiApp<App>()
             .ConfigureMauiHandlers(handlers =>
             {
                  handlers.AddHandler(typeof(CustomFrame), typeof(CustomShadowFrameRenderer));        
             })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74549468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档