以编程方式选择列表框中的项目

本文关键字:项目 列表 编程 方式 选择 | 更新日期: 2023-09-27 18:02:02

我有三个ListBoxes (CompanyNameRepresentative & quotennumber ),然后使用下面的方法将数据从WCF客户端加载到CompanyName列表框中:

private async Task LoadCompanies()
{
    using (TruckServiceClient client = new TruckServiceClient())
    {
        var companies = await client.GetCompaniesAsync();
        foreach (var company in companies)
            lbxCompanyName.Items.Add(new ListBoxViewItem<Company>(company));
    }
}

现在在下面的代码中,我允许自己在lbxCompanyName列表框中选择公司名称,然后在lbxRepresentative列表框中查看属于该公司的代表

private void lbxCompanyName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var company = (ListBoxViewItem<Company>)lbxCompanyName.SelectedItem; //Changing this line to auto select an Item for me
    foreach (var rep in company.Item.Represetatives)
        lbxRepresentatives.Items.Add(new ListBoxViewItem<Represetative>(rep));
} 

我想要实现的是自动/编程地选择名称,让我们说"Josh",从CompanyName ListBox。我该如何用现有的代码来做呢?

基本上我想隐藏我的列表框,让我的程序为我选择一切

以编程方式选择列表框中的项目

使用数据绑定,您可以绑定ItemsSource和SelectedItem

然后你可以在
后面的代码中分配SelectedItem您很可能需要实现INotifyPropertyChanged

你可以用binding
填充代表但是你得到的很奇怪——你只是为每个SelectionChanged

添加代表

为了测试的目的,我通过设置我的前两个ListBox (CompanyName, Representative) SelectedIndex为0,然后使用下面的代码为我的最后一个ListBox (quotennumber)选择quotennumber列表框中最后插入的行来解决我的问题。

    if (lbxQuoteNumber.Items.Count > -1)
        lbxQuoteNumber.SelectedIndex = lbxQuoteNumber.Items.Count - 1;

谢谢大家的帮助!:)