IsSynchronizedWithCurrentItem = true时的WPF ListBox绑定

时间:2011-06-29 21:15:46

标签: wpf listbox

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

启动时,在屏幕显示之前,我的视图模型有SelectedGroup = Groups.First()(并且组包含多个项目)。

我花了大约一个小时试图找出为什么我的物品没被选中。单击(或按空格键)时,所选项目显示为已选中,但在此之前,该项目未显示为已选中。

我添加<ListBox IsSynchronizedWithCurrentItem ="True">后,该应用开始运作。

问题:有人可以解释为什么这是必要的吗?换句话说,为什么微软甚至会选择这个呢?我不会总是想要这种行为吗?

2 个答案:

答案 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"};
   }
}