gpt4 book ai didi

c# - 设置 ItemsSource 后使 ListBox 不选择第一项

转载 作者:行者123 更新时间:2023-11-30 22:37:36 30 4
gpt4 key购买 nike

我喜欢填充 ListboxList<T>作为 ItemsControl.ItemsSource .好像我一设置ItemsSource ,我的事件处理程序 SelectionChanged触发,我在列表中的第一项被选中。我想在默认情况下不选择任何内容来启动列表,并且在用户实际单击列表成员之前不必尝试处理事件。

这是在弹出窗口中,因此每次出现列表时,都应将其设置为“未选择”,即 SelectedIndex == -1 .

我想我可以删除代码中的事件处理程序,填充列表,将其设置为 -1,然后再次添加事件处理程序,但似乎是一种困惑的方式。

最佳答案

心理调试,你是否在 XAML 中将 ListBox.IsSynchronizedWithCurrentItem 设置为 True

给定:

    <ListBox x:Name="TestListBox"
IsSynchronizedWithCurrentItem="True"/>

和:

    public MainWindow()
{
InitializeComponent();
this.TestListBox.SelectionChanged += TestListBox_SelectionChanged;
this.TestListBox.ItemsSource = Enumerable.Range(10, 10).ToList();
}

void TestListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
throw new NotImplementedException();
}

我收到了一个 NotImplementException,这意味着 IsSynchronizedWithCurrentItem="True" 可能是罪魁祸首。

我们可以通过删除此属性或将其设置为 false 来检验这个假设,这样在用户点击某个项目之前不会抛出异常。

关于c# - 设置 ItemsSource 后使 ListBox 不选择第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446301/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com