【发布时间】:2021-03-13 07:17:23
【问题描述】:
我想在没有选择任何项目时选择组合框的第一项,但它不适用于 ContainerFromIndex(0) 或 ContainerFromItem。
我不确定为什么它不会像这样工作,因为如果在组合框中选择了一个项目,索引方法可以正常工作,那么为什么在没有选择项目时它不能工作,因为项目仍然存在。我什至可以轻松地从代码中的项目列表中获取第一项。基本上我想要第一个“ComboBoxItem”。
if (comboBox.SelectedIndex == -1)
{
//var allItems = comboBox.Items.ToList();
//var cccc = comboBox.Items.Count;
//var firstItem = allItems.First();
var ci = comboBox.ContainerFromIndex(0) as ComboBoxItem;
if (ci != null)
{
ci.StartBringIntoView();
}
}
更新
我还尝试了使用 Task.Delay(100) 的以下代码 bcz 项目应该是延迟加载的,但仍然将 ci 设为 null,奇怪的是 comboBox.Items 显示所有项目,并且comboBox.ItemSource 显示项目的所有计数,但 ContainerFromItem 仍返回 null。
await Task.Delay(100);
var comboBox = (ComboBox) sender;
if (comboBox.SelectedIndex == -1)
{
var ci = comboBox.Items[0];
var cc = comboBox.ContainerFromItem(ci) as ComboBoxItem;
if (cc != null)
{
cc.StartBringIntoView();
}
}
【问题讨论】:
标签: c# xaml uwp combobox frameworks