【问题标题】:Creating Listbox dynamically in Grid WPF在 Grid WPF 中动态创建列表框
【发布时间】:2014-05-29 05:29:01
【问题描述】:

我一直在搜索许多博客以找到。如何在网格单元格中动态创建列表框。我想在该 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>

但我不知道如何在动态中创建相同的内容。我有一个按钮,如果我单击该按钮,它应该创建一列中包含项目的列表框。如果再次单击该按钮,它应该在该网格的下一行创建另一个列表框。

这是我的代码。

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

    }

【问题讨论】:

  • This blog 有一个使用 ItemsControl 的好例子。您也可以将相同的技术应用于 ListBox。
  • 我想要动态创建的示例代码

标签: c# wpf listbox


【解决方案1】:
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);

【讨论】:

  • 它看起来不错..!但我在这里找不到任何多选模式。!我想将 SelectionMode 用作 Multiple。
  • listBox.SelectionMode = SelectionMode.Multiple;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2018-06-25
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多