Erstellen Sie eine Reihe von Schaltflächen programmgesteuert in C # Win Phone 8 App

Ich habe ein Problem in meiner C# Datei. Ich muss 6 Buttons programmgesteuert an bestimmten Orten erstellen. aber meine for-Schleife funktioniert nicht ..

nur eine Taste zeigt und nicht alle Tasten.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
//using System.Array;

namespace AimPass
{
     public partial class main : PhoneApplicationPage
     {
    public main()
     {
        InitializeComponent();

    }

private void newbutton(object sender, RoutedEventArgs e)
    {
//How many buttons do you want ?
        int NumOfButtons = 6;
       //X Location of each created button in the panel
        int loc = 20;
        for (int i = 1; i <= NumOfButtons; i++)
        {
            Button btn = new Button();
            {
                btn.Name = "Btn-" + i.ToString();
              btn.Size= new Size(50, 20);
               btn.Tag = i;
                btn.Content = "Browse-" + i.ToString();
              btn.location = new Point(5, loc);
            }
            //Add Click event Handler for each created button
           btn.Click += Buttons_Click;
            loc += 20;
           //Add the created btn to grid
            grid.Children.Add(btn);
        }
}

}

}

Es gibt 2,3 Fehler kommt ..       Verwenden von System.Windows.Controls.Buttons enthält keine Definition von Ort und Größe ... ???

    btn.Click += Buttons_Click; does not exist in current context..

Und Schleife funktioniert nicht. Nur eine Taste kommt außer 6 Tasten.

Ich möchte Button an einem bestimmten Ort hinzufügen .. So kommt diese Fehler zu meiner Anforderung .. Vielen Dank im Voraus für die Lösung .. :)

0

2 Antworten

Einige Zeit bevor ich das richtig habe ... schau dir mal an, du bekommst was du gelesen hast .. Es ist ein wenig lang, aber ich denke, es wird Ihnen helfen zu verstehen, was Sie suchen .. Sie können Row hinzufügen und fügen Sie es in einer Schleife gleichzeitig, aber wenig mehr ist immer gut ..

das ist deine lösung ... für deinen fall..aber ich denke du gehst auf den falschen weg ..

private void newbutton()
    {
       //How many buttons do you want ?
        int NumOfButtons = 6;
       //X Location of each created button in the panel
        StackPanel stkpanel = new StackPanel();
        stkpanel.Orientation = Orientation.Horizontal;
        int loc = 20;
        for (int i = 1; i <= NumOfButtons; i++)
        {
            Button btn = new Button();
            {
                btn.Name = "Btn-" + i.ToString();
                btn.Height = 20;
                btn.Width = 50;
                btn.Foreground = new SolidColorBrush(Colors.White);
                btn.Content = "btnnum" + i.ToString();
                btn.Tag = i;
                btn.Content = "Browse-" + i.ToString();
                btn.Margin = new Thickness(5 + loc, 5, 5, 5);
                btn.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top;
            }
            //Add Click event Handler for each created button
            btn.Click += btn_Click;
            loc += 20;
           //Add the created btn to grid
            stkpanel.Children.Add(btn);
        }
        grid.Children.Add(stkpanel);
    }

    void btn_Click(object sender, RoutedEventArgs e)
    {
      //throw new NotImplementedException();
    }

So..es ist besser, Sie haben etwas in einigen Beispielprojekten versucht ... was ich zu Ihnen canve .. Und wie die vorherige Antwort sagt Knopf nicht Eigenschaften wie Loc etc, die Sie festlegen möchten .. für die Marge ist thr..and für Größe Höhe und Breite sind da..und wichtig ist .. zuerst schreiben Sie Xaml für was Sie möchten erreichen und versuchen, die Eigenschaften, die Sie in XAML während der Laufzeit in einem neuen Projekt festgelegt .. Set wird definitiv sagen, wie die Dinge funktionieren ..

 Grid grdbooltype = new Grid();
            grdbooltype.Name = "Grid_" + keybooltype;
            grdbooltype.Margin = new Thickness(0, 20, 20, 0);
            grdbooltype.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
            grdbooltype.RowDefinitions.Add(new RowDefinition());

            TextBlock objtextblock = new TextBlock();
            objtextblock.Text = "Select Image";
            objtextblock.FontSize = 15;
            grdbooltype.Children.Add(objtextblock);
            Grid.SetRow(objtextblock, 0);


            Grid grdtoggleswitch = new Grid();
            grdtoggleswitch.Name = headername;
            grdtoggleswitch.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
            grdtoggleswitch.ColumnDefinitions.Add(new ColumnDefinition());

            TextBlock txtblktoggleswitchleft = new TextBlock();
            txtblktoggleswitchleft.FontSize = 15;
            txtblktoggleswitchleft.VerticalAlignment = VerticalAlignment.Center;
            txtblktoggleswitchleft.Text = headername;
            Grid.SetColumn(txtblktoggleswitchleft, 0);

            ToggleSwitch toggleswitch = new ToggleSwitch();
            toggleswitch.Name = key;
            toggleswitch.HorizontalAlignment = HorizontalAlignment.Right;
            toggleswitch.Padding = new Thickness(0);
            toggleswitch.IsOn = defaultvalue;
            toggleswitch.Margin = new Thickness(0, 0, 0, 0);
            toggleswitch.OnContent = "On";
            toggleswitch.OffContent = "Off";
            Grid.SetColumn(toggleswitch, 1);

            grdtoggleswitch.Children.Add(txtblktoggleswitchleft);
            grdtoggleswitch.Children.Add(toggleswitch);

            Grid.SetRow(grdtoggleswitch, 1);

            grdbooltype.Children.Add(grdtoggleswitch);
0
hinzugefügt
Du hast die erste Zeile vermisst. "Grdbooltype" ist dort definiert.
hinzugefügt der Autor C4u, Quelle
Krybooltype n andere viel sind auch nicht im aktuellen Kontext enthalten .. Was ist die mögliche Lösung für solche Art von Fehler ..
hinzugefügt der Autor Arsal, Quelle

Zunächst einmal haben Tasten in Windows Phone weder Größe noch Position. Warum denkst du, dass sie das tun? Statt Size haben Sie zwei Eigenschaften: Width und Height .

Wie für den Standort funktioniert XAML nicht so. Raster ist eine spezielle Art von Steuerelement, das ein Layout erstellt und Sie definieren, wie viele Spalten und Zeilen in Ihrem Raster gewünscht werden. Dann platzieren Sie die Steuerelemente in einzelnen Zellen oder Sie können die Steuerelemente über die Zellen verteilen.

Vielleicht solltest du zuerst etwas über XAML lernen, hier ist ein guter Ausgangspunkt: Layout für Windows Phone .

- BEARBEITEN: Hinzufügen von Beispielcode zum Platzieren einer Schaltfläche in der ersten Zeile und in der ersten Spalte. Beachten Sie, dass Sie die Raster- und Spaltendefinition entweder in XAML oder in Code definieren müssen.

grid.Children.Add(btn);
Grid.SetRow(btn, 0);

Grid.SetColumn (btn, 0);

0
hinzugefügt
Kennen Sie die Syntax, um mein Steuerelement in eine Rasterzeile oder -spalte zu platzieren?
hinzugefügt der Autor Arsal, Quelle