C# WPF将项目添加到列表框,如果该项目没有';不存在
我正在学习WPF,遇到了以下问题: 我有一个文本框(txbAuthor)和一个列表框(lstAuthors),我想做的是,每当按下分号时,我想在lstAuthors中添加txbAuthor中的值,如果该值不存在的话。我写了这段代码,但不起作用:C# WPF将项目添加到列表框,如果该项目没有';不存在,c#,wpf,C#,Wpf,我正在学习WPF,遇到了以下问题: 我有一个文本框(txbAuthor)和一个列表框(lstAuthors),我想做的是,每当按下分号时,我想在lstAuthors中添加txbAuthor中的值,如果该值不存在的话。我写了这段代码,但不起作用: private void Add_Author(object sender, KeyEventArgs e) { if (e.Key == Key.P) { string Author = txbAuthor.Text.Remove(t
private void Add_Author(object sender, KeyEventArgs e)
{
if (e.Key == Key.P)
{
string Author = txbAuthor.Text.Remove(txbAuthor.Text.Length - 1);
ListBoxItem itm = new ListBoxItem();
itm.Content = Author;
if (! lstAuthors.Items.Contains(itm))
{
lstAuthors.Items.Add(itm);
}
txbAuthor.Text = "";
}
}
在这段代码中,我还想知道如何在“键”选项中找到分号而不是“p”,所以我想知道如何在“p”选项中检查分号而不是“p”。表达式
lstAuthors.Items.Contains(itm)
对于新创建的itm
对象,将始终返回false
。但这并不重要,因为你的整个方法都是错误的
在WPF应用程序中,您通常会实现MVVM模式,并将ListBox的
ItemsSource
属性绑定到视图模型类中的字符串集合属性
但是,作为第一步,您可以简单地在MainWindow类中声明一个ObservableCollection
成员,并在其构造函数中直接将其分配给ItemsSource属性:
private readonly ObservableCollection<string> authors
= new ObservableCollection<string>();
public MainWindow()
{
InitializeComponent();
lstAuthors.ItemsSource = authors;
}
如果((发件人作为文本框)。Text[(发件人作为文本框)。Text.Length]==';')在keydown事件中不起作用,则可以在Textbox\u TextChanged事件中使用此行来检查Simiclon!
var author = txbAuthor.Text.TrimEnd(' ', ';');
if (!authors.Contains(author))
{
authors.Add(author);
}