1
我試圖將項目(文本框和按鈕)動態添加到列表框中。c#在列表框中動態添加項目 - 未顯示項目
這是我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
s。
有什麼想法? 謝謝!
編輯: 如果我有
<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>
但儘管如此,似乎沒有什麼:(
您將每個項目指定爲一個空的堆棧面板。 – chris
是否有一個原因,你沒有使用MVVM和綁定來動態生成項目? – Dzyann
嗡嗡聲,我試圖使用綁定,但它從來沒有顯示。 其實我想在我的類裏面創建按鈕,因爲在這個例子中沒有顯示更多的動作。 如何告訴堆疊面板創建2個按鈕? – F4Ke