我需要创建一个ObservableCollection of ListBoxes作为我的列,并制作一个ObservableCollection of Buttons作为我ListBox的任务。
问题是我创建了一个水平StackPanel。
<StackPanel Name="panel" Orientation="Horizontal">
</StackPanel>
public partial class MainWindow : Window
{
private ListBox currentList;
public MainWindow()
{
InitializeComponent();
}
private void Button_Click2(object sender, RoutedEventArgs e)
{
currentList = new ListBox();
Button b1 = new Button();
b1.Content = "Add Card";
b1.Height = 23;
b1.Width = 100;
b1.Click += B1_Click;
currentList.Items.Add(b1);
panel.Children.Add(currentList);
}
private void B1_Click(object sender, RoutedEventArgs e)
{
Button currentButton = (Button)sender;
currentList = ((ListBox)currentButton.Parent);
Button bt = new Button();
bt.Content = "task";
bt.Height = 23;
bt.Width = 100;
currentList.Items.Add(bt);
}
}
这就是我得到的结果:
这正是我需要的,除了我需要绑定StackPanel问题是不可能绑定它,并且由于某些原因,当我添加Vertical ListBoxes然后添加时,我无法使用Horizontal ListBox达到相同的结果按钮里面的结果是:
答案 0 :(得分:1)
这是一个示例,说明如何使用ItemsControl
中的Xaml
更好地实现您要执行的操作。通过绑定到ObservableCollection
并在集合中为每个项目创建ListBox
来工作。 ListBox
然后绑定到ObservableCollection
内部以显示每个单独的项目。
<ItemsControl ItemsSource="{Binding MyCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding}" Width="100" Height="auto">
</ListBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
private ObservableCollection<ObservableCollection<string>> _myCollection;
public ObservableCollection<ObservableCollection<string>> MyCollection
{
get { return _myCollection; }
set { _myCollection = value; NotifyPropertyChanged }
}