我是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); }
}
答案 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);
}