Ubah IsEnabled & IsVisible pada Konfirmasi Kata Sandi di Xamarin

Nov 12 2020

Di Aplikasi Xamarin saya, saya mencoba menggunakan ubah IsVisibleuntuk Framedan IsEnableduntuk Button, ketika Kata Sandi Dikonfirmasi (Kata Sandi & Konfirmasi Kata Sandi seharusnya teks yang sama), tetapi tidak mengubah apa pun.

Satu Ironi adalah bahwa ketika Aplikasi terbuka, secara default (tidak ada nilai apa pun yang dimasukkan), Password.Text == ConfirmPassword.Textadalah True.

Saya ingin mengubahnya, jika Nilai dari kedua Entrybidang sama. Terima kasih.

Kode .xml

<Entry
    x:Name="Password"
    IsPassword="True"
    Keyboard="Numeric"
    MaxLength="8"
    ReturnType="Next" />
                        
<Entry
    x:Name="ConfirmPassword"
    IsPassword="True"
    Keyboard="Numeric"
    MaxLength="8"
    ReturnType="Done" />


<Frame x:Name="RedBar" BackgroundColor="#E1444D" IsVisible="true">
    <BoxView />
</Frame>
                
<Frame x:Name="GreenBar" BackgroundColor="#24D27F" IsVisible="false">
    <BoxView />
</Frame>


<Button
    x:Name="PasswordButton"
    IsEnabled="False"
    Text="Submit">
</Button>

Kode .xml.cs

public PasswordPage()
{
    InitializeComponent();

    if (Password.Text == ConfirmPassword.Text)
    {
        RedBar.IsVisible = false;
        GreenBar.IsVisible = true;
        PasswordButton.IsEnabled = true;
    }

    else
    {
        RedBar.IsVisible = true;
        GreenBar.IsVisible = false;
        PasswordButton.IsEnabled = false;
    }
}

Jawaban

1 jai Nov 12 2020 at 16:59

Kode Xaml

<Entry
    x:Name="Password"
    IsPassword="True"
    Keyboard="Numeric"
    MaxLength="8"
    ReturnType="Next" Unfocused="Password_Unfocused" />

        <Entry
    x:Name="ConfirmPassword"
    IsPassword="True"
    Keyboard="Numeric"
    MaxLength="8"
    ReturnType="Done" Unfocused="ConfirmPassword_Unfocused"/>


        <Frame x:Name="RedBar" BackgroundColor="#E1444D" IsVisible="true">
            <BoxView />
        </Frame>

        <Frame x:Name="GreenBar" BackgroundColor="#24D27F" IsVisible="false">
            <BoxView />
        </Frame>


        <Button
    x:Name="PasswordButton"
            Clicked="PasswordButton_Clicked"
    IsEnabled="False"
    Text="Submit">
        </Button>

Kode Belakang

public PasswordPage()
{
    InitializeComponent();

    ValidatePassword();
}

private void Password_Unfocused(object sender, FocusEventArgs e)
        {
            ValidatePassword();
        }

        private void ConfirmPassword_Unfocused(object sender, FocusEventArgs e)
        {
            ValidatePassword();
        }

 private void ValidatePassword()
            {
                if (!string.IsNullOrEmpty(Password.Text) && !string.IsNullOrEmpty(ConfirmPassword.Text))
                {
                    if (Password.Text == ConfirmPassword.Text)
                    {
                        RedBar.IsVisible = false;
                        GreenBar.IsVisible = true;
                        PasswordButton.IsEnabled = true;
                    }
    
                    else
                    {
                        RedBar.IsVisible = true;
                        GreenBar.IsVisible = false;
                        PasswordButton.IsEnabled = false;
                    }
                }
                else
                {
                    RedBar.IsVisible = true;
                    GreenBar.IsVisible = false;
                    PasswordButton.IsEnabled = false;
                }
            }
1 RonakShethia Nov 12 2020 at 11:15

ubah kondisi if Anda menjadi ini

if (Password.Text == ConfirmPassword.Text && !string.IsNullOrWhiteSpace(Password.Text))
{
}
1 jdweng Nov 12 2020 at 12:14

Gunakan linq berikut:

       const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            string xml = File.ReadAllText(FILENAME);
            XDocument doc = XDocument.Parse(xml);

            List<XElement> entries = doc.Descendants("Entry").ToList();

            string name1 = (string)entries[0].Attributes().Where(x => x.Name.LocalName == "Name").FirstOrDefault();
            string name2 = (string)entries[1].Attributes().Where(x => x.Name.LocalName == "Name").FirstOrDefault();
 
        }