簡體   English   中英

動態將列表框項添加到現有列表框項

[英]Dynamically Add listbox item to existing listbox item

我是WPF和MVVM的新手。 我有兩個列表A和列表B.第一個列表包含許多項目,第二個列表包含少量項目。 列表A中的每個項目都按順序執行。第一個項目將向打印機發送命令,並從打印機獲得響應,如果響應匹配,它將移至下一個項目。

項目列表列表A發送一個命令或多個命令。

因此,現在我要檢查項目是發送一個命令還是多個命令。如果要發送多個命令,那么我要顯示從下面的B列表到相應的A的列表的所有項目以及該數據的綁定。

對於單命令,我的代碼工作正常

注意:列表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); }
    }

這是我的.xaml代碼

要更新集合及其項目,應使用ObservableCollection<TestItem>而不是List<TestItem> TestItem還應該實現INotifyPropertyChanged以在更改時進行通知。

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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM