Laden...

Warum hat im C# & XAML ein Label hat immer eine 0 vor der eigentlichen Zahl?

Erstellt von MaxiB vor 3 Jahren Letzter Beitrag vor 3 Jahren 989 Views
M
MaxiB Themenstarter:in
2 Beiträge seit 2020
vor 3 Jahren
Warum hat im C# & XAML ein Label hat immer eine 0 vor der eigentlichen Zahl?

Hallo,

ich möchte selber mit Xamarin und C# einen Taschenrechner programmieren.

Mein Problem ist folgendes:

Ich habe auf einer Seite verschiedene Buttons (siehe Bild) und möchte, wenn man auf einen Button klickt, dass in dem ersten oder zweiten Label die Ziffer erscheint.
In meiner Version erscheint immer eine 0 vor der Zahl.

Wäre toll wenn ihr mir da helfen könntet.

Danke und Grüße Maxi

Mein XAML-Code:

<Grid Margin="30" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="25"></RowDefinition>
            <RowDefinition Height="25"></RowDefinition>
            <RowDefinition Height="25"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50"></ColumnDefinition>
            <ColumnDefinition Width="50"></ColumnDefinition>
            <ColumnDefinition Width="50"></ColumnDefinition>
            <ColumnDefinition Width="50"></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <Button Text="0" x:Name="Cmd_0" Clicked="Cmd_1_Click"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="9"  Grid.Column="1" />

        <Button Text="," x:Name="Cmd_Komma"
        HorizontalOptions="Center" BackgroundColor="Orange"
        VerticalOptions="CenterAndExpand" Grid.Row="9" Grid.Column="2" />

        <Button Text="7" x:Name="Cmd_7"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="8" Grid.Column="0" />

        <Button Text="8" x:Name="Cmd_8"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="8" Grid.Column="1" />

        <Button Text="9" x:Name="Cmd_9"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="8" Grid.Column="2" />

        <Button Text="4" x:Name="Cmd_4"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="7" Grid.Column="0" />

        <Button Text="5" x:Name="Cmd_5"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="7" Grid.Column="1" />

        <Button Text="6" x:Name="Cmd_6"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="7" Grid.Column="2" />

        <Button Text="1" x:Name="Cmd_1" Clicked="Cmd_1_Click"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="6" Grid.Column="0" />

        <Button Text="2" x:Name="Cmd_2"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="6" Grid.Column="1" />

        <Button Text="3" x:Name="Cmd_3"
        HorizontalOptions="Center" BackgroundColor="DarkGray" TextColor="White"
        VerticalOptions="CenterAndExpand" Grid.Row="6" Grid.Column="2" />

        <Button Text="=" x:Name="Cmd_Istgleich"
        HorizontalOptions="Center" BackgroundColor="Orange" TextColor="Black"
        VerticalOptions="CenterAndExpand" Grid.Row="9" Grid.Column="3" />

        <Button Text="÷" x:Name="Cmd_Durch"
        HorizontalOptions="Center" BackgroundColor="Orange" TextColor="Black" 
        VerticalOptions="CenterAndExpand" Grid.Row="8" Grid.Column="3" />

        <Button Text="×" x:Name="Cmd_Mal"
        HorizontalOptions="Center" BackgroundColor="Orange" TextColor="Black" 
        VerticalOptions="CenterAndExpand" Grid.Row="7" Grid.Column="3" />

        <Button Text="-" x:Name="Cmd_Minus"
        HorizontalOptions="Center" BackgroundColor="Orange" TextColor="Black" 
        VerticalOptions="CenterAndExpand" Grid.Row="6" Grid.Column="3" />

        <Button Text="+" x:Name="Cmd_Plus"
        HorizontalOptions="Center" BackgroundColor="Orange" TextColor="Black" 
        VerticalOptions="CenterAndExpand" Grid.Row="5" Grid.Column="3" />

        <Button Text="?" x:Name="Cmd_Pi"
        HorizontalOptions="Center" BackgroundColor="Orange" TextColor="Black" 
        VerticalOptions="CenterAndExpand" Grid.Row="5" Grid.Column="2" />

        <Button Text="C" x:Name="Cmd_Clean"
        HorizontalOptions="Center" BackgroundColor="Orange" TextColor="Black" 
        VerticalOptions="CenterAndExpand" Grid.Row="5" Grid.Column="1" />

        <Label Text="" x:Name="lbl_gleich"
        HorizontalOptions="Center"
        VerticalOptions="CenterAndExpand"   Grid.Row="4" Grid.Column="0"/>

        <Label Text="" x:Name="lbl_rechenoperator_2"
        HorizontalOptions="Center"
        VerticalOptions="CenterAndExpand"   Grid.Row="3" Grid.Column="0"/>

        <Label Text="" x:Name="lbl_rechenzeichen"
        HorizontalOptions="Center"
        VerticalOptions="CenterAndExpand"   Grid.Row="2" Grid.Column="0"/>

        <Label x:Name="Lbl_rechenoperator_1"
        HorizontalOptions="Center" VerticalOptions="CenterAndExpand" TextColor="Black"
        Grid.Row="2" Grid.Column="0"/>

    </Grid>

Und hier mein C#-Code:

public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            lbl_gleich.Text = "";
            lbl_rechenzeichen.Text = "";
            Cmd_0.Clicked += Cmd_0_Click;
            Cmd_1.Clicked += Cmd_1_Click;           
        }

       

        private void Cmd_0_Click(object sender, EventArgs args)
        {
            if(lbl_rechenzeichen.Text == "")
            {
                Lbl_rechenoperator_1.Text = Lbl_rechenoperator_1.Text + "0";
            }
            else
            {
                lbl_rechenoperator_2.Text = lbl_rechenoperator_2.Text + "0";
            }
        }
16.833 Beiträge seit 2008
vor 3 Jahren

Mal selbst gedebugged, woher das kommen könnte?
[Artikel] Debugger: Wie verwende ich den von Visual Studio?

Ansonsten der gerenelle Hinweis, dass man auch bei Xamarin und XAML den MVVM Pattern verwenden sollte.
Xamarin (mit XAML) und WPF sind darauf ausgelegt.
[Artikel] MVVM und DataBinding

M
MaxiB Themenstarter:in
2 Beiträge seit 2020
vor 3 Jahren

Vielen Dank für die schnelle Antwort. Werde ich gleich mal ausprobieren

187 Beiträge seit 2009
vor 3 Jahren

Hallo,

in Deinem XAML sind alle Buttons ausser der 0 und 1 tot, da kein Click Event definiert ist.
Die beiden Buttons 0 und 1 definieren das gleiche Event, aber die zugehörige Cmd_1_Click Methode hast Du nicht gepostet.
Stattdessen aber Cmd_0_Click, die aber keinem Button zugeordnet ist.
In Deiner Cmd_0_Click Methode wird nicht ersichtlich, welcher Button gedrückt ist und einfach immer nur stur eine weitere 0 im Label angefügt.

Deswegen verwende ich jetzt mal die Methode als Cmd_1_Click für eine mögliche Lösung:

        private void Cmd_1_Click(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;
            if (lbl_rechenzeichen.Content == "")
            {
                Lbl_rechenoperator_1.Content = $"{Lbl_rechenoperator_1.Content}{button.Content}";
            }
            else
            {
                lbl_rechenoperator_2.Content = $"{lbl_rechenoperator_2.Content}{button.Content}";
            }
        }

Das ist jetzt WPF, da ich von Xamarin keinen Plan habe!

4.939 Beiträge seit 2008
vor 3 Jahren

Stattdessen aber Cmd_0_Click, die aber keinem Button zugeordnet ist.

Doch, schau mal in den Konstruktor. 😉