Xamarin.Forms上的Salve Schedule作业

问题描述 投票:1回答:1

当我尝试在Visual Studio上运行应用程序时,我遇到了一个例外。我正在尝试使用xamarin表单构建时间表,当有人单击相关性(“ Prioridade”的4个选项)时,它将时间表作为新事件保存。每当我尝试在仿真中尝试新的事情时,都会遇到相同的错误。下面是代码:

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="XPerfilEMenu.Tarefas.Cadastro">
    <ContentPage.Content>
        <StackLayout Margin="40" Spacing="40">
            <Label FontAttributes="Bold" Text="Nome da tarefa" />
            <Entry x:Name="TarefaDigitada"/>
            <Label FontAttributes="Bold" Text="Prioridade da tarefa" />
            <StackLayout x:Name="SLPrioridades" Spacing="30">

                <!--URGENTE E IMPORTANTE-->
                    <StackLayout Spacing="10" Orientation="Horizontal">
                        <!--<Image Source="4.png"/>-->
                    <Image>
                        <Image.Source>
                            <OnPlatform
                                x:TypeArguments="FileImageSource">
                                <On
                                    Platform="iOS, Android"
                                    Value="Vermelho.png" />
                            </OnPlatform>
                        </Image.Source>
                    </Image>
                    <Label
                            Text="Urgente e importante"
                            TextColor="Gray"
                            HorizontalOptions="FillAndExpand" />

                    <StackLayout.GestureRecognizers>
                        <TapGestureRecognizer Tapped="PrioridadeEscolhida" />
                    </StackLayout.GestureRecognizers>

                    </StackLayout>

                <!--URGENTE E NÃO IMPORTANTE-->
                <StackLayout
                    Spacing="10"
                    Orientation="Horizontal">
                    <Image
                        Source="Laranja.png" />
                    <Label
                        Text="Urgente e não importante"
                        HorizontalOptions="FillAndExpand"
                        TextColor="Gray" />

                    <StackLayout.GestureRecognizers>
                        <TapGestureRecognizer
                            Tapped="PrioridadeEscolhida" />
                    </StackLayout.GestureRecognizers>
                </StackLayout>

                <!--NÃO URGENTE E IMPORTANTE-->
                <StackLayout
                    Spacing="10"
                    Orientation="Horizontal">
                    <Image
                        Source="Amarelo.png" />
                    <Label
                        Text="Não urgente e importante"
                        HorizontalOptions="FillAndExpand"
                        TextColor="Gray" />
                    <StackLayout.GestureRecognizers>
                        <TapGestureRecognizer
                            Tapped="PrioridadeEscolhida" />
                    </StackLayout.GestureRecognizers>
                </StackLayout>

                <!--NÃO URGENTE E NÃO IMPORTANTE-->
                <StackLayout
                    Spacing="10"
                    Orientation="Horizontal">
                    <Image
                        Source="Verde.png" />
                    <Label
                        Text="Não urgente e não importante"
                        HorizontalOptions="FillAndExpand"
                        TextColor="Gray" />
                    <StackLayout.GestureRecognizers>
                        <TapGestureRecognizer
                            Tapped="PrioridadeEscolhida" />
                    </StackLayout.GestureRecognizers>
                </StackLayout>

                <!-- ADICIONAR BOTÃO -->
                <Button HorizontalOptions="End" Margin="20" Clicked="AdicionarTarefa">
                    <Button.ImageSource>
                        <OnPlatform
                            x:TypeArguments="FileImageSource">
                            <On
                                Platform="iOS, Android"
                                Value="AddBotao.png" />
                        </OnPlatform>
                    </Button.ImageSource>
                </Button> 
            </StackLayout>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

C#,我遇到的大多数问题

using System;

using Xamarin.Forms;
using XPerfilEMenu.Tarefas;

namespace XPerfilEMenu.Tarefas
{
    public partial class Cadastro : ContentPage
    {


        private string Prioridade { get; set; }
        public byte PrioridadeFinal { get; set; }
        public Cadastro()
        {
            InitializeComponent();
        }

        public void PrioridadeEscolhida(object sender, EventArgs args)
        {
            //Primeiro localiza todas labels com base no slprioridades e vamos fazer com que todas forcem para cor cinza e depois faz apenas o elemento clicado fique escuro
            var Stacks = SLPrioridades.Children;
            foreach(var Linha in Stacks)
            {
                Label LabelPrioridade = ((StackLayout)Linha).Children[1] as Label;
                LabelPrioridade.TextColor = Color.Gray;
            }


            //Agora vamos transformar o que foi clicado em preto
            ((Label)((StackLayout)sender).Children[1]).TextColor = Color.Black;


            //Capturando qual foi a prioridade clicada com base no nome da imagem.
            FileImageSource Source = ((Image)((StackLayout)sender).Children[0]).Source as FileImageSource;
            //Para obter o nome do elemento clicado, se usa:

            Prioridade = Source.File.ToString().Replace(".png", "");

        }


        //Salvando novo evento
        public void AdicionarTarefa(object sender, EventArgs args)
        {

            bool ErroExiste = false;

            //Verificando se os dois campos estão preenchidos. Para strings, verificando se o tamanho é maior que 0:
            if (!(TarefaDigitada.Text.Trim().Length > 0))
            {
                ErroExiste = true;
                DisplayAlert("Erro", "Tarefa não digitada", "Okay");
            }

            //Já, para a prioridade, 

            if (!(Prioridade.Trim().Length > 0))
            {
                ErroExiste = true;
                DisplayAlert("Erro", "Prioridade não escolhida", "Okay");
            }

            //Se o bool ErroExiste chegar até o final como falsa, a tarefa será salva.
            if (ErroExiste == false)
            {
                PostsAFazer postsAFazer = new PostsAFazer();
                postsAFazer.Nome = TarefaDigitada.Text.Trim();
                postsAFazer.Prioridade = byte.Parse(Prioridade);

                new GerenciadorPostagens().Salvar(postsAFazer);

                //Para confirmar, fazemos o campo de digitar a tarefa para mostrar quantos elementos temos na lista
                TarefaDigitada.Text = new GerenciadorPostagens().Listagem().Count.ToString();
            }
        }

    }
}
c# xamarin xamarin.forms schedule
1个回答
0
投票

为什么要遍历布局,这很繁琐且容易出错。

您可以使用属性:x:Name:例如:

               <Label
                    x:Name="LabelPrioridade"
                    Text="Urgente e não importante"
                    HorizontalOptions="FillAndExpand"
                    TextColor="Gray" />

并且使用起来很简单:

   LabelPrioridade.TextColor = Color.Gray;
© www.soinside.com 2019 - 2024. All rights reserved.