Home > DeveloperSection > Forums > Getting new line in wpf
Pravesh Singh

Total Post:411

Points:2881
Posted on    September-23-2013 5:00 AM

 WPF WPF 
Ratings:


 1 Reply(s)
 790  View(s)
Rate this:

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);

}

}



Sumit Kesarwani

Total Post:378

Points:2694
Posted on    September-23-2013 7:01 AM

Hi Pravesh,

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.


Don't want to miss updates? Please click the below button!

Follow MindStick