c#在列表框中动态添加项目-项目未显示
本文关键字:项目 显示 添加 动态 列表 | 更新日期: 2023-09-27 18:26:18
我正在尝试将项目(文本框和按钮)动态添加到列表框中。
这是我的xaml
:
<ListBox x:Name="projects_list" Height="459" Canvas.Left="20" Canvas.Top="86" Width="755">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Height="42">
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
而且,在StackPanel
中,我想要我的2个按钮。
在foreach
中,我创建了如下按钮:
items.ForEach(delegate (Projects project)
{
Button txt = new Button(); // NAME
txt.Height = 32;
txt.Width = 320;
txt.Content = project.name;
Button gen_token = new Button();
gen_token.Height = 26;
gen_token.Width = 180;
gen_token.Content = "Generate";
this.projects_list.Items.Add(txt);
this.projects_list.Items.Add(gen_token);
}
但是,当我将这些元素添加到我的ListBox
中时,什么也不会出现。尽管如此,在我的列表中还是有很多StackPanel
。
知道吗?谢谢
编辑:如果我有
<Button Content="{Binding}" ></Button>
在stackPanel
中,我的按钮正在显示,但实际上没有。我想,它们是stackpanel
中的一个,我希望每个面板上都有两个按钮。。
第2版:所以,我尝试了这个:
public List<Dictionary<string, Button>> Items { get; set; }
....
Items = new List<Dictionary<string, Button>>();
DataContext = this;
稍后在each
中
Dictionary<string, Button> dict = new Dictionary<string, Button>() { { "name", txt }, { "token", gen_token } };
Items.Add(dict);
所以在我的xaml中,我有:
<ListBox x:Name="projects_list" Height="459" Canvas.Left="20" Canvas.Top="86" Width="755" ItemsSource="{Binding Items}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Height="42">
<Button Content="{Binding Path=name}" ></Button>
<Button Content="{Binding Path=token}" ></Button>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但是,什么也没有出现:(
一个快速示例:
窗口.Xaml
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
背后的代码
public partial class MainWindow : Window
{
public ObservableCollection<string> Items { get; set; }
public MainWindow()
{
InitializeComponent();
Items = new ObservableCollection<string> { "Item 1", "Item2" };
DataContext = this;
}
}
这只是一个给你一个想法的快速例子。您可能会执行ViewModel,而不是代码隐藏。