以编程方式选择ListBox中的Item

时间:2015-07-09 09:41:28

标签: c# wpf wcf listbox

我有三个ListBoxes公司名称代表& QuoteNumber ),我将数据从我的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 ListBox。

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));
} 

我想要实现的是从 CompanyName ListBox中自动/编程选择名称,比如说“Josh”。我将如何利用现有的编码来实现这一目标?

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

2 个答案:

答案 0 :(得分:1)

使用data binding,您可以绑定ItemsSource和SelectedItem

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

你可以通过约束来填充代表 但你所拥有的是奇怪的 - 你只需在每个SelectionChanged

中添加Representsetatives

答案 1 :(得分:0)

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

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

感谢所有帮助伙计们! :)