我有一个ListView
,我希望相互比较不同的观点。但是当我在object
中选择另一个ListView
时,它会覆盖之前选定的object
。
看到这张图片:
我将MVVM
与DataBinding
一起使用,所以它与我想的有关,现在你怎么能修复'这个。因为我现在不知道。
我希望清楚我尝试做什么或想做什么?
<ListView Grid.Row="3"
ItemsSource="{Binding PersonList}"
SelectedItem="{Binding SelectedPerson}">
private Person _SelectedPerson;
public Person SelectedPerson
{
get
{
return _SelectedPerson;
}
set
{
_SelectedPerson = value;
Messenger.Default.Send(SelectedPerson);
PersonDetailView personDetailView = new PersonDetailView();
personDetailView.Show();
_SelectedPerson = null;
RaisePropertyChanged("SelectedPerson");
}
}
我是否还需要创建DetailViewModel
的新实例?
public PersonDetailViewModel(IPersonDataService iPersonDataService)
{
_IPersonDataService = iPersonDataService;
Messenger.Default.Register<Person>(this, (selectedPerson) =>
{
SelectedPerson = selectedPerson;
});
}
private Person _SelectedPerson;
public Person SelectedPerson
{
get
{
return _SelectedPerson;
}
set
{
_SelectedPerson = value;
RaisePropertyChanged("SelectedPerson");
}
}
答案 0 :(得分:1)
为什么不做这样的事情?因此,您始终可以通过object
重新推荐ListView
并将Person
绑定到View
。
public class PersonDetailViewModel
{
public Person Person { get; }
public PersonDetailViewModel(Person person)
{
Person = person;
}
}
创建PersonDetailViewModel
。
PersonDetailViewModel personDetailView = new PersonDetailViewModel(value);
personDetailView.Show();
或(如果您订阅&#34; DoubleCLick
event
&#34;例如)
PersonDetailViewModel personDetailView = new PersonDetailViewModel(listBox.SelectedItem as Person);
personDetailView.Show();
我之前从未使用Messenger
。