gpt4 book ai didi

xamarin.forms - System.ArgumentException : Xamarin. 表单

转载 作者:行者123 更新时间:2023-12-03 21:23:27 25 4
gpt4 key购买 nike

我是这个很棒的平台的新手,我做了一个非常简单的例子,它只包含一个 XAML 页面。昨天它完美无缺,但是今天运行它时,它突然抛出了这个异常

这是异常(exception):

Exception

HelloPage.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="SAP.HelloPage">

<!-- la configuration personalisé pour chaque system d'éxploitation -->
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness"
iOS="0,10,0,0"
Android="0,40,0,0">
</OnPlatform>
</ContentPage.Padding>


<StackLayout HorizontalOptions="Center" BindingContext="{x:Reference sliderID}">

<Button Clicked="Button_Clicked" Text="Suivant"/>

<Label x:Name="lb_font" Text="Font is :"/>


<Slider Minimum="16" Maximum="45" x:Name="sliderID" ValueChanged="sliderID_ValueChanged"/>

<Label x:Name="lb_quote"/>

</StackLayout>
<ContentPage>

HelloPage.xaml.cs :
public partial class HelloPage : ContentPage
{

// quotes
List<string> quotes = new List<string>()
{
"Bienvenu, la première paragraphe",
"une autre quote, cella j'adore",
"La troisième est magnifique"
};

int pos = 0;

public HelloPage()
{
InitializeComponent();

// settings initialisation
lb_quote.Text = quotes.ElementAt(0);
}


private void Button_Clicked(object sender, EventArgs e)
{
if(pos == quotes.Count)
{
pos = 0;
}

lb_quote.Text = quotes.ElementAt(pos);
pos += 1;

}

private void sliderID_ValueChanged(object sender, ValueChangedEventArgs e)
{
lb_font.Text ="Font Size : " + sliderID.Value.ToString();
lb_quote.FontSize = sliderID.Value;
}
}

最佳答案

这个非常微妙且难以捕捉(嗯,实际上并不难捕捉;只需在 try/catch 周围放置一个 InitializeComponent 即可检查异常)。

XAML 是声明性的,这让我们相信控件的属性顺序无关紧要。不幸的是,由于在某些时候声明性 XAML 变成属性赋值的序列,属性的顺序 很重要,这是您的订单Slider导致抛出异常的属性。

你可以想象你的Slider构建方式如下:

var slider = new Slider();
slider.Minimum = 16;
slider.Maximum = 45;
...

但是 Slider.MinimumSlider.Maximum似乎检查传递的值是否有效。

当您的代码开始时, Maximum 的值默认为 0 .但在其值被赋值之前, Minimum的值被赋值为 16 .

此时您的 Minimum值 (16) 大于默认值 Maximum值 (0),因此是 ArgumentOutOfRangeException被抛出。

要解决它,只需设置 Maximum之前 Minimum值(value),它确实有效。

关于xamarin.forms - System.ArgumentException : <Timeout exceeded getting exception details> Xamarin. 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47417950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com