【问题标题】:LinearGradientBrush Experimental initialization problemLinearGradientBrush 实验初始化问题
【发布时间】:2020-11-15 00:46:41
【问题描述】:

您好,我在登录页面时遇到错误。我只是编写 Mainpage.xaml 文件,其他文件是默认文件,我在创建项目时选择了“空白”。 我的错误是:

" System.InvalidOperationException: "您尝试使用的类、属性或方法("GradientBrush" 是 GradientBrush 的一部分;要使用它,您必须先调用 Forms.SetFlags("Brush_Experimental") 来选择加入)调用 Forms.Init()。”

我只写了一个文件Mainpage.xaml。有人帮我解决我的问题吗?

    <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="HealthCareApp.MainPage">
<StackLayout>
        <StackLayout.Background>
            <LinearGradientBrush EndPoint="0,1">
                <GradientStop Color="#48b6a6" Offset="0.1" /> 
                <GradientStop Color="#2b78d4" Offset="1.0" />
            </LinearGradientBrush>
        </StackLayout.Background>
        <StackLayout Padding="0" Margin="10,100,10,0" HorizontalOptions="FillAndExpand" >
            <Frame BackgroundColor="Transparent" HeightRequest="500" Padding="0" Margin="0">
                <StackLayout>
                    <StackLayout Margin="10">
                        <Label Text="SIGN IN" TextColor="White" HorizontalOptions="CenterAndExpand" FontAttributes="Bold" ></Label>
                    </StackLayout>
                    <StackLayout Padding="0" Margin="15,10">
                        
                        <Frame BackgroundColor="Transparent" BorderColor="White" Padding="0" HorizontalOptions="FillAndExpand" CornerRadius="30">
                            <StackLayout Orientation="Horizontal">
                                <Frame BackgroundColor="SkyBlue" HeightRequest="40" WidthRequest="40" CornerRadius="30" Padding="0" Margin="5">
                                    <Image Source="https://www.findool.com/images/avatars/avatar.png" Aspect="AspectFill" Margin="0"/>
                                </Frame>
                                <Entry Placeholder="Email" TextColor="#666666" FontAttributes="None" HorizontalOptions="FillAndExpand" Margin="0,0,20,0"/>
                            </StackLayout>
                        </Frame>

                        <Frame BackgroundColor="Transparent" BorderColor="White" Margin="0,15,0,0" Padding="0" HorizontalOptions="FillAndExpand" CornerRadius="30">
                            <StackLayout Orientation="Horizontal">
                                <Frame BackgroundColor="SkyBlue" HeightRequest="40" WidthRequest="40" CornerRadius="30" Padding="0" Margin="5">
                                    <Image Source="https://images.all-free-download.com/images/graphicthumb/lock_icon_6813906.jpg" Aspect="AspectFill" Margin="0"/>
                                </Frame>
                                <Entry Placeholder="Password" IsPassword="True" TextColor="White" FontAttributes="None" HorizontalOptions="FillAndExpand" Margin="0,0,20,0"/>
                            </StackLayout>
                        </Frame>

                        <StackLayout  Orientation="Horizontal">
                            <CheckBox IsChecked="False" Color="White" />
                            <Label Text="Remember me" TextColor="White" FontSize="Small" VerticalTextAlignment="Center" HorizontalTextAlignment="Center" />

                            <Label Text="Forgot Password" TextColor="White" FontAttributes="Bold" HorizontalOptions="EndAndExpand" FontSize="Small" VerticalTextAlignment="Center" HorizontalTextAlignment="Center" />
                        </StackLayout>

                        <Button Text="SIGN IN" BackgroundColor="#2b78d4" TextColor="White" CornerRadius="30" />
                        <StackLayout Orientation="Horizontal" HorizontalOptions="CenterAndExpand">
                            <Label Text="Still Not Connected ?" TextColor="White" FontSize="Small"/>
                            <Label Text="Sign Up" TextColor="White" FontAttributes="Bold" FontSize="Small"/>
                        </StackLayout>

                        <StackLayout Margin="0,25,0,0" Padding="0">
                            <Grid>
                                <BoxView BackgroundColor="White" HeightRequest="1" WidthRequest="150"  HorizontalOptions="Center" VerticalOptions="Center"/>
                                <Frame BackgroundColor="White" HeightRequest="45" WidthRequest="45" CornerRadius="45" HasShadow="False" BorderColor="White" Margin="0" HorizontalOptions="Center" Padding="0">
                                    <Label Text="OR" TextColor="White" FontSize="Small" VerticalTextAlignment="Center" HorizontalTextAlignment="Center"/>
                                </Frame>
                            </Grid>
                        </StackLayout>

                        <StackLayout Margin="0,25" Orientation="Horizontal" HorizontalOptions="CenterAndExpand">
                            <Frame BackgroundColor="White" HeightRequest="45" WidthRequest="45" CornerRadius="45" HasShadow="False" BorderColor="White" Margin="0" HorizontalOptions="Center" Padding="0">
                                <Image Source="https://www.pngitem.com/pimgs/m/44-440455_transparent-background-fb-logo-hd-png-download.png" Aspect="AspectFill" Margin="0"/>
                            </Frame>
                            <Frame BackgroundColor="White" HeightRequest="45" WidthRequest="45" CornerRadius="45" HasShadow="False" BorderColor="White" Margin="0" HorizontalOptions="Center" Padding="0">
                                <Image Source="https://blog.hubspot.com/hubfs/image8-2.jpg" Aspect="AspectFill" Margin="0"/>
                            </Frame>
                        </StackLayout>
                        
                    </StackLayout>
                </StackLayout>
            </Frame >    
        </StackLayout>
</StackLayout >

</ContentPage>

【问题讨论】:

  • 错误消息告诉您确切地如何解决这个问题 - “您必须在调用 Forms.Init() 之前通过调用 Forms.SetFlags("Brush_Experimental") 来选择加入。 "
  • 亲爱的@Jason 我应该写什么到 MainPage.xaml.cs 文件?现在是默认设置,我只是在做 ui 部分,而没有触及任何背后的逻辑部分。我只向这个 Mainpage.xaml 文件写代码,它在上面。也许它看起来很奇怪,但我很抱歉问太多问题:/
  • 也许尝试在您的代码中搜索“Forms.Init”并在那里进行更改?或者阅读下面的@CFun 注释
  • @Jason 是的,感谢你们俩

标签: c# xaml xamarin xamarin.forms


【解决方案1】:

根据documentation,您需要为开发团队判断仍处于实验阶段的某些功能设置实验标志(在您的目标平台项目中),以便您在使用它们之前确认。

在 android 上将在您的 MainActivity 类中,在 ios 上将在 AppDelegate 类中:

Forms.SetFlags("Brush_Experimental")

您可以一次设置多个实验标志,例如:

Xamarin.Forms.Forms.SetFlags(new string[] { "SwipeView_Experimental", "Shapes_Experimental", "AppTheme_Experimental" });

注意

确保在Xamarin.Forms.Forms.Init()之前调用SetFlags()

【讨论】:

    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 2020-12-25
    • 2011-10-13
    • 2011-10-29
    • 2020-10-17
    • 2020-09-24
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多