user2613455
user2613455

Reputation: 53

Getting new line in wpf

i am having arraylist.let say it contains 15 elements. I am adding these to stack panel. I need to add 3 elements per line. my code is below. I am getting either horizontal or verrtical.Let me know how to do this.

    MainWindow w;
    public ShopCart(MainWindow m,ArrayList _list)
    {

        InitializeComponent();
        w = m;


        int i = 1;

        foreach (string cartitems in _list)
        {

                mystackpanel.Orientation = Orientation.Horizontal;
                mystackpanel.Margin.Left.Equals(150);
                Label lbl = new Label();
                lbl.Name = "Label" + i;
                lbl.Height = 30;
                lbl.Width = 200;
                lbl.Margin.Left.Equals(150);
                //lbl.Margin.Top.Equals(150);
                lbl.Content = cartitems.ToString();
                mystackpanel.Children.Add(lbl);
                i++;

                int str = mystackpanel.Children.Count;
                MessageBox.Show(Convert.ToString(str));
                if (str%3 == 0)
                {
                    Button btndelete = new Button();
                    btndelete.Content = "Delete";
                    btndelete.Width = 120;
                    btndelete.Height = 35;
                    mystackpanel.Children.Add(btndelete);

                    mystackpanel.Margin.Top.Equals(500);


                }








        }

Upvotes: 0

Views: 114

Answers (1)

user786981
user786981

Reputation:

Here is some sample code(assuming you already have a list of buttons, and will add outer stack panel to your main control) you can try, you may need to change few things as per your need:

            List<Button> buttons = new List<Button>();
            StackPanel panel = new StackPanel();
            panel.Orientation = Orientation.Horizontal;
            int count = 0;
            StackPanel innerPanel = new StackPanel();
            innerPanel.Orientation = Orientation.Vertical;

            foreach (Button button in buttons)
            {
                innerPanel.Children.Add(button);
                ++count;
                if (count % 3 == 0 && count != 0)
                {
                    panel.Children.Add(innerPanel);
                    innerPanel = new StackPanel();
                    innerPanel.Orientation = Orientation.Vertical;
                }
            }

            if (panel.Children.Contains(innerPanel) == false)
            {
                panel.Children.Add(innerPanel);
            }

Although in my opinion the best way will be to have a Grid with n*n row and columns and add your buttons to respective row, columns.

Upvotes: 1

Related Questions