Элементы WPF StackPanel должны повторяться

Я добавляю кнопки на панель стека во время выполнения в С# WPF. Что я хочу, так это когда я прокручиваю элементы панели стека, как только я дохожу до последнего раза, когда я хочу, чтобы он отображал первый элемент после последнего, чтобы он продолжал повторять список.

<ScrollViewer VerticalScrollBarVisibility="Hidden" CanContentScroll="True" HorizontalScrollBarVisibility="Hidden"
                              Name="SVMenu" Margin="-2,45,2,39" Grid.RowSpan="3">

                        <StackPanel x:Name="stackpanel_Menu1">

                        </StackPanel>
                </ScrollViewer>

а это Код для создания кнопок.

 DataTable dt = db.VIEW_MENUS();
        foreach (DataRow dr in dt.Rows)
        {
            Button Btn = new Button();
            Label LB = new Label();
            Btn.Content = dr[1].ToString();
            Object obj = dr["MENUIMAGE"];
            if (obj != null)
            {
                try
                {
                    ImageBrush BtnBrush = new ImageBrush();
                    using (MemoryStream stream = new MemoryStream((byte[])obj))
                    {
                        BtnBrush.ImageSource = BitmapFrame.Create(stream,
                                          BitmapCreateOptions.None,
                                          BitmapCacheOption.OnLoad);
                    }
                    //// Use the brush to paint the button's background.
                    Btn.Background = BtnBrush;

                }
                catch (Exception)
                {
                }
            }
            Btn.Tag = dr["MENUID"];
            Btn.Click += btn1_Click;
            Style style = this.FindResource("CircleButton") as Style;
            Btn.Style = style;
            Btn.Width = 85;
            Btn.Height = 85;
            Btn.HorizontalAlignment = HorizontalAlignment.Center;
            Btn.Margin = new Thickness(0,2,0,0.1);
            //an(Btn);
            LB.Foreground = Brushes.White;
            LB.FontWeight = FontWeights.Bold;
            LB.Content = dr["MENUTITLE"];
            LB.HorizontalAlignment = HorizontalAlignment.Center;
            StackPanel stackpanel_Menu = new StackPanel();
            stackpanel_Menu.Children.Add(Btn);
            stackpanel_Menu.Children.Add(LB);
            stackpanel_Menu1.Children.Add(stackpanel_Menu);

так что он добавляет 15 кнопок в Stackpanel, и я могу видеть их по вертикали. Когда я могу прокручивать до последней 15-й кнопки, я хочу, чтобы она снова показывала мне первую кнопку и продолжала прокручивать вниз, а не заканчивала прокрутку.


person Danyal Ahmed    schedule 09.05.2018    source источник
comment
Возможно, вы захотите создать специализированную панель макета. См. Как to: Создать пользовательский элемент панели.   -  person Clemens    schedule 09.05.2018
comment
покажите мне снова первую кнопку: это по определению не StackPanel. Присмотритесь к другим панелям.   -  person bommelding    schedule 09.05.2018


Ответы (1)


Это недоступно из коробки в WPF

Либо найдите сторонний элемент управления, либо напишите свою собственную реализацию.

person Emond Erno    schedule 09.05.2018