我正在使用Windows手机应用程序,我想在已存在的列表中添加项目我的问题是,当我添加第一项时它的确定,但当我添加第二项时,列表将替换我之前添加的项目
private void btn_profession_Loaded(object sender, RoutedEventArgs e)
{
try
{
selectedKeywordsIds = App.skillIds; // for selected keyword
selectedProfName = App.professionalName;
selectedProfId = App.professionalId;
this.btn_profession.Content = selectedProfName;
Key = App.skillKeywords ;
Pro = App.professionalName;
final1=Key.Replace(Pro, "");
List<string> numbers = final1.Split(',').ToList<string>();
numbers.Add(selectedKeywordsIds);
numbers = numbers.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList();
listBox1.ItemsSource = null;
listBox1.ItemsSource = numbers;
}
答案 0 :(得分:0)
在添加项目之前,您似乎每次都会从之前的变量 final1 构建列表。你应该考虑这样的事情
final1 = string.Join(',', numbers.ToArray());
添加新项目后。因此,对“数字”集合所做的更改将作为逗号分隔的项目存储在 final1 变量中。
答案 1 :(得分:0)
听起来您希望再次显示相同的列表项,这意味着在过滤空或空格后,您不应在Distinct()
上使用numbers
。
numbers = numbers.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();
答案 2 :(得分:0)
尝试使用ObservableCollection -
ObservableCollection<string> coll = new ObservableCollection<string>(numbers);
将ListBox的itemsource设置为此可观察集合。
您无需使用 -
listBox1.ItemsSource = null;
listBox1.ItemsSource = numbers;
只需在observable集合中添加或删除所需的项目即可。更改将自动反映在UI中的listBox1上。
此外,您可能需要更改代码 -
numbers = numbers.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList();
更适合于可观察的收集。