Создание Listbox динамически в Grid WPF

1

Я искал много блогов, чтобы их найти. как динамически создавать Listbox в ячейке сетки. И я хочу добавить элементы списка по горизонтали в столбце Grid. Например, я хочу показать дни недели в этом столбце, у меня есть код в XAML для этого.

<ListBox SelectionMode="Multiple" ScrollViewer.HorizontalScrollBarVisibility="Disabled"   Margin="0,0,10,0">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"></StackPanel>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBoxItem> Mon </ListBoxItem>
        <ListBoxItem> Tue </ListBoxItem>
        <ListBoxItem> Wed </ListBoxItem>
        <ListBoxItem> Thu </ListBoxItem>
        <ListBoxItem> Fri </ListBoxItem>
    </ListBox>

но я не знаю, как создать то же самое в динамическом режиме. У меня есть одна кнопка для этого, если я нажму кнопку, она должна создать Listbox с элементами в столбце. И снова, щелкнув по кнопке, он должен создать другой Listbox в следующей строке этой сетки.

это мой код.

 public int i=0;
 private void Button_Click(object sender, RoutedEventArgs e)
    {

        RowDefinition row0 = new RowDefinition();
        row0.Height = new GridLength(40);
        grid1.RowDefinitions.Add(row0);

        ColumnDefinition col0 = new ColumnDefinition();           
        col0.Width = new GridLength(150);   
        grid1.ColumnDefinitions.Add(col0);

        Listbox lb=new Listbox();
        ?
        ?
        Grid.SetRow(?, i);
        Grid.SetColumn(?, 0);

        i++;

    }
Теги:
wpf
listbox

1 ответ

0
Лучший ответ
var panelTemplate = new ItemsPanelTemplate();
var stackPanel = new FrameworkElementFactory(typeof(StackPanel));
stackPanel.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
panelTemplate.VisualTree = stackPanel;

ListBox listBox = new ListBox();
listBox.ItemsPanel = panelTemplate;
listBox.Items.Add("Mon");
listBox.Items.Add("Tue");
listBox.Items.Add("Wed");
listBox.Items.Add("Thu");
listBox.Items.Add("Fri");

this.grid.Children.Add(listBox);
listBox.SetValue(Grid.RowProperty, 0);
listBox.SetValue(Grid.ColumnProperty, 0);
  • 0
    выглядит хорошо ..! но я не нахожу здесь режим множественного выбора! Я хочу использовать SelectionMode как несколько.
  • 1
    listBox.SelectionMode = SelectionMode.Multiple;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню