在Grid WPF中动态创建列表框

本文关键字:创建 列表 动态 Grid WPF | 更新日期: 2023-09-27 18:05:53

我已经搜索了很多博客。如何在网格单元格中动态创建列表框。我想添加列表框项目水平在网格列。例如,我想在该列中显示星期,我有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>

,但我不知道如何创建相同的动态。我有一个按钮,如果我点击按钮,它应该创建列表框与列中的项目。同样,如果点击按钮,它会在网格的下一行创建另一个列表框。

这是我的代码。

 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++;
    }

在Grid WPF中动态创建列表框

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