C# 选择列表框中的第一项

C# 选择列表框中的第一项,c#,wpf,listbox,C#,Wpf,Listbox,列表框作为richtextbox中的自动完成,我正在用集合中的项目填充它。我需要它在每次列表框填充时自动选择第一项 我该怎么做 多谢各位 foreach (var ks in ksd.FindValues(comparable)) { lb.Items.Add(ks.Value); } if (lb.HasItems) { lb.Visibility = System.Windows.Visibility.

列表框作为richtextbox中的自动完成,我正在用集合中的项目填充它。我需要它在每次列表框填充时自动选择第一项

我该怎么做

多谢各位

foreach (var ks in ksd.FindValues(comparable))
      {
          lb.Items.Add(ks.Value);
      }

      if (lb.HasItems)
      {
          lb.Visibility = System.Windows.Visibility.Visible;
          lb.SelectedIndex = 0; //Suggested solution, still doesn't work 
      }
      else
      {
          lb.Visibility = System.Windows.Visibility.Collapsed;
      }
第一次加载时,可以在XAML中将SelectedIndex设置为0

<ListBox SelectedIndex="0" />

如果您使用的是MVVM,还可以尝试其他解决方案:

将名为SelectedValue的属性添加到ViewModel; 将值加载或添加到绑定到列表框的列表后,使用ValuesList.Firstor默认设置SelectedValue; 在XAML上,将ListBox的SelectedItem属性绑定到SelectedValue 从ViewModel并设置绑定模式=双向
你不需要任何东西,只需要你使用的数据。您不应该对控件的外观感兴趣。 你不想被控制住

<ListBox ItemsSource="{Binding MyItems}" SelectedItem="{Binding MyItem}" />
可以是:

<SexyWoman Legs="{Binding MyItems}" Ass="{Binding MyItem}" />
它也会起作用

ListBox将此类作为DataContext:

class DummyClass : INotifyPropertyChanged
{

    private MyItem _myItem;
    public MyItem MyItem
    {
        get { return _myItem; }
        set { _myItem = value; NotifyPropertyChanged("MyItem"); }
    }

    private IEnumerable<MyItem> _myItems;
    public IEnumerable<MyItem> MyItems
    {
        get { return _myItems; }        
    }

    public void FillWithItems()
    {
        /* Some logic */
        _myItems = ...

        NotifyPropertyChanged("MyItems");

        /* This automatically selects the first element */
        MyItem = _myItems.FirstOrDefault();
    }

    #region INotifyPropertyChanged Members
    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(string value)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(value));
        }
    }
    #endregion
}
这应该起作用:

listBox1.SetSelected(0,true);

这就是我所拥有的,它不起作用。如何填充您的列表?我的意思是你使用绑定吗?不。我正在用listbox.Items.Add填充它。添加感谢帮助第一个选择项的索引为0。所以你可以喜欢我的帖子。编辑后直到无法工作,我的代码可能有问题。如果我不明白的话,我会仔细检查并贴出来。谢谢-1:对不起,我完全不明白你的例子是如何回答这个问题的。我认为,如果您只需要输入特定的代码块,而不是整个虚拟机,这将非常有帮助?我知道这已经有几年了,但它肯定应该是公认的答案!:
listBox1.SetSelected(0,true);