WPF ListBox绑定当IsSynchronizedWithCurrentItem=true时

3
<ListBox HorizontalAlignment="Right" 
   ItemsSource="{Binding Groups}" 
   SelectedValue="{Binding SelectedGroup}"/>

在启动时,在屏幕显示之前,我的视图模型中有SelectedGroup = Groups.First()(而Groups包含多个项目)。
我试了大约一个小时才弄清楚为什么我的项目没有被选中。当我点击(或按下空格键)时,选定的项目才会出现选定状态,但在此之前,该项目未被选中。
添加<ListBox IsSynchronizedWithCurrentItem ="True">后,应用程序开始工作。
问题:有人能解释为什么需要这样做吗?换句话说,为什么Microsoft会将其作为选项?难道我不应该总是希望这种行为发生吗?
2个回答

1
考虑以下示例:示例 在使用ComboBox时,它阐述了这个想法:您不希望自动选择第一项。

0

事实证明,我的实际问题是每次访问属性时,我的应用程序都会生成不同的组列表,因此SelectedGroup属性的值从未等于Groups属性中的任何值。

使用类似这样的迭代器实现了Groups:

public IEnumerable<Group> Groups
{
   get
   {
      yield return new Group {Name="Todo"};
      yield return new Group {Name="Done"};
   }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接