C# 选择列表框中的第一项
列表框作为richtextbox中的自动完成,我正在用集合中的项目填充它。我需要它在每次列表框填充时自动选择第一项 我该怎么做 多谢各位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.
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);