动态添加列表框项目到现有列表框项目

时间:2017-03-20 10:02:31

标签: c# wpf xaml mvvm listbox

我是WPF和MVVM的新手。 我有两个列表列表A和列表B.第一个列表包含许多项目,第二个列表包含很少项目。 列表A中的每个项目都按顺序执行。第一项将向打印机发送命令并将从打印机获得响应,如果响应匹配,则它将移至下一个。

项目表单列表A发送一个命令或多个命令。

所以,现在我要检查项目是否发送一个命令或多个命令。如果它发送多个命令,那么我想显示下面B列表中的所有项目到相应的A列表和数据绑定。

对于Single命令,我的代码工作正常

注意:列表B因项目而异。

以下是我在代码中使用的属性:

     private bool isMultiCommand;
    public bool IsMultiCommand 
    {
        get { return isMultiCommand; }
        set { SetProperty(ref isMultiCommand, value)};
    }


    public List<TestItem> MultipleCommandTestItemsList { get; set; }

     public string TestItemName { get; set; }


    private List<TestItem> testItemsList;
    public List<TestItem> TestItemsList
    { 
         get { return testItemsList; } 
         set { SetProperty(ref testItemsList, value); }
    }

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html#transaction-declarative-annotations

2 个答案:

答案 0 :(得分:1)

要更新集合及其项目,您应使用ObservableCollection<TestItem>代替List<TestItem>TestItem还应实施INotifyPropertyChanged,以便在更改时通知。

答案 1 :(得分:1)

XAML设计:

<Grid>

    <ListBox x:Name="Listbox1" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"/>

    <Button x:Name="Add" Content="ADD" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="105,10,0,0" Click="Add_Click"/>

    <Button Content="REMOVE" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="105,45,0,0" Click="Remove_Click"/>

    <Label Content="Add Listitem" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="105,74,0,0"/>
    <TextBox x:Name="textbox1" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="84" Margin="105,100,0,0"/>

</Grid>

XAML Design.cs

添加命名空间: using System.Collections.ObjectModel;

private ObservableCollection<string> listitem;
    public Window5()
    {
        InitializeComponent();
        listitem = new ObservableCollection<string> { "ListItem 1", "ListItem 2" };
        Listbox1.ItemsSource = listitem;
    }

    private void Add_Click(object sender, RoutedEventArgs e)
    {
        listitem.Insert(listitem.Count, textbox1.Text);
        textbox1.Clear();
    }

    private void Remove_Click(object sender, RoutedEventArgs e)
    {
        int index = Listbox1.SelectedIndex;
        listitem.RemoveAt(Listbox1.SelectedIndex);
    }