*简介:* 我正在使用标准的 MVVM 框架,并且我有两个列表框,我希望能够从中选择一个项目。列表框绑定到同一类的不同 ObservableCollections。
绑定到 ViewModel 后,我希望能够在同一个窗口中表示选定的项目,具体取决于我选择的项目。
视图模型 -
private KisesaSearchResultViewModel _selectedPerson;
public KisesaSearchResultViewModel SelectedPerson
{
get
{
return _selectedPerson;
}
set
{
_selectedPerson = value;
OnPropertyChanged("SelectedPerson");
}
}
private KisesaSearchResultViewModel _selectedSearch;
public KisesaSearchResultViewModel SelectedSearch
{
get
{
return _selectedSearch;
}
set
{
_selectedSearch = value;
SelectedPerson = value;
OnPropertyChanged("SelectedSearch");
}
}
private KisesaSearchResultViewModel _selectedMatch;
public KisesaSearchResultViewModel SelectedMatch
{
get
{
return _selectedMatch;
}
set
{
_selectedMatch = value;
SelectedPerson = _selectedMatch;
OnPropertyChanged("SelectedMatch");
}
}
XAML -
<ListBox ItemsSource="{Binding Path=MatchedMembers, Mode=OneWay}"
ItemTemplate="{StaticResource SearchResult}"
SelectedItem="{Binding SelectedSearch}">
</ListBox>
<ListBox ItemsSource="{Binding Path=SelectedMatchList, Mode=OneWay}"
ItemTemplate="{StaticResource SearchResult}"
SelectedItem="{Binding SelectedMatch}">
</ListBox>
我想这样显示信息:
<TextBlock Grid.Row="1" Text="{Binding Path= SelectedPerson.FullName}" FontSize="18" FontWeight="Bold" Style="{StaticResource PInfo}" />
<TextBlock Grid.Column="0" Grid.Row="2" Style="{StaticResource Info}" Margin="30,0,0,0" Text="{Binding Path=SelectedPerson.Age}"/>
问题: 我需要 SelectedSearch 和 SelectedPerson 因为我希望能够独立更改 SelectedPerson。此时,SelectedPerson 正在由 SelectedSearch 设置器设置,但它没有绑定到 Textblocks。我正在使用 OnPropertyChanged,但是否需要执行其他操作,例如使用事件处理程序?另外,有点不相关,但我可以限制 WPF 窗口,以便一次只选择两个不同列表框中的一个项目吗?