<ListBox HorizontalAlignment="Right"
ItemsSource="{Binding Groups}"
SelectedValue="{Binding SelectedGroup}"/>
启动时,在屏幕显示之前,我的视图模型有SelectedGroup = Groups.First()
(并且组包含多个项目)。
我花了大约一个小时试图找出为什么我的物品没被选中。单击(或按空格键)时,所选项目显示为已选中,但在此之前,该项目未显示为已选中。
我添加<ListBox IsSynchronizedWithCurrentItem ="True">
后,该应用开始运作。
问题:有人可以解释为什么这是必要的吗?换句话说,为什么微软甚至会选择这个呢?我不会总是想要这种行为吗?
答案 0 :(得分:1)
考虑这个例子:Example
使用ComboBox时,它说明了这个想法:您不希望自动选择第一个项目。
答案 1 :(得分:0)
事实证明,我的实际问题是我的应用程序每次访问属性时都会生成不同的Group列表,因此值SelectedGroup
属性永远不会等于Groups
属性中的值
使用像这样的迭代器实现组:
public IEnumerable<Group> Groups
{
get
{
yield return new Group {Name="Todo"};
yield return new Group {Name="Done"};
}
}