【问题标题】:Programmatically selecting an Item in a ListBox以编程方式选择列表框中的项目
【发布时间】:2015-07-09 09:41:27
【问题描述】:

我有三个 ListBoxesCompanyNameRepresentativeQuoteNumber),我从 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 ListBox 中选择公司名称,然后在我的@987654324 中查看属于该公司的代表 @列表框。

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 列表框中自动/以编程方式选择名称,比如说“Josh”。我将如何使用我现在拥有的编码来执行此操作?

基本上我想隐藏我的列表框,让我的程序为我选择所有内容。

【问题讨论】:

  • 为什么不为此使用数据绑定?这样要容易得多,您可以在 WPF 中以几乎零代码实现这一目标。
  • 感谢您的评论!您的意思是在我的 XAML 中绑定它吗?
  • 是的,寻找数据绑定教程。然后,假设您的数据上下文中有一个 Company 类和一个 IList&lt;Person&gt; Representatives 属性和一个 IList&lt;Company&gt; Companies 属性。您可以将公司列表框绑定为Items="{Binding Companies}" IsSynchronizedWithCurrentItem="True",将代表列表框绑定为Items="{Binding Companies/Representatives}"。工作完成:-)
  • @Lucas Trzesniewski -感谢所有努力的人;)。我只是想知道,如何从数据绑定中选择特定公司名称?我对 XAML 不是很了解,但我现在会去研究它。
  • 这也可以通过绑定来完成...SelectedItem="{Binding CurrentCompany, Mode=TwoWay}"

标签: c# wpf wcf listbox


【解决方案1】:

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

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

您可以使用绑定填充代表
但是你所拥有的很奇怪——你只是在每次 SelectionChanged 时添加了 Represetatives

【讨论】:

    【解决方案2】:

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

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

    感谢所有帮助的家伙! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      相关资源
      最近更新 更多