我正在玩MVVM和绑定。更具体地说,是一个显示对象集合的ListBox:
<ListBox ItemsSource="{Binding Scouts}" SelectedItem="{Binding SelectedScout, Mode=TwoWay}/>
在我的ViewModel中,它看起来像这样:
private ObservableCollection<Scout> scouts;
private Scout selectedScout;
public Scout SelectedScout
{
get { return selectedScout; }
set
{
OnPropertyChanged("SelectedScout");
value = selectedScout;
}
}
public ObservableCollection<Scout> Scouts
{
get { return scouts; }
set
{
OnPropertyChanged("Scouts");
scouts = value;
}
}
现在,ListBox显示集合中的Items很好,但我想要做的是单击Box中的项目,然后在TextBox中显示该项目的更多详细信息。我想我会将ListBox的SelectedItem属性绑定到我的ViewModel中的Selected-property(如上所示)并将属性绑定到TextBox,如下所示:
<TextBox Text="{Binding SelectedScout.Id}"/>
但它不起作用。当我在ListBox中选择一个项目时,TextBox保持空白,我认为这是因为我的SelectedScout
属性remians null。
我一直在努力解决这个问题,我似乎无法找到解决方案。我不知道我错过了什么。
提前感谢您的帮助。
**编辑:我解决了这个问题。谢谢你的回答,但错误在于这一行:
public Scout SelectedScout
{
get { return selectedScout; }
set
{
OnPropertyChanged("SelectedScout");
*value = selectedScout;*
}
}
当然应该在哪里:
selectedScout = value;
我觉得现在真的很蠢。谢谢您的帮助。
**