选择列表框中的第一个项目
本文关键字:第一个 项目 列表 选择 | 更新日期: 2023-09-27 18:15:26
列表框作为richtextbox内的自动完成,我正在用集合中的项目填充它。我需要它自动选择第一个项目,每次列表框填充。
我该怎么做?
Thank you
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" />
在代码隐藏中,您可以在加载项列表
之后执行此操作 if (this.lst.Items.Count > 0)
this.lst.SelectedIndex = 0;
如果你正在使用MVVM,那么你也可以尝试另一种解决方案:
- 添加属性
SelectedValue
到ViewModel; - 加载(或添加)
List
后,您绑定到ListBox
设置SelectedValue
与valuesList.FirstOrDefault();
在XAML上,将
ListBox
的SelectedItem
属性绑定到SelectedValue
(来自ViewModel)并设置绑定Mode="TwoWay"
应该可以:
listBox1.SetSelected(0,true);
您不需要任何东西,只需要使用数据。你不应该对控制中心的样子感兴趣。(您不希望与该控件耦合)
<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
}