[英]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); }
}
要更新集合及其項目,應使用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.