Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MVVM更改选择事件_C#_Wpf_Mvvm_Listbox_Listitem - Fatal编程技术网

C# 使用MVVM更改选择事件

C# 使用MVVM更改选择事件,c#,wpf,mvvm,listbox,listitem,C#,Wpf,Mvvm,Listbox,Listitem,我有一个列表框,其中包含人员列表。 当用户单击某个项目时,viewModel应将currentPerson对象设置为用户单击的对象 为此,我必须使用ViewModel,因此在MainWindow.xaml.xs中没有代码。有什么办法解决这个问题吗?很简单: 向ViewModel添加属性CurrentPerson,并将其绑定到列表框的SelectedItem属性 大概是这样的: 视图模型: public Person CurrentPerson { get { return _curren

我有一个列表框,其中包含人员列表。 当用户单击某个项目时,viewModel应将currentPerson对象设置为用户单击的对象

为此,我必须使用ViewModel,因此在MainWindow.xaml.xs中没有代码。有什么办法解决这个问题吗?

很简单:

向ViewModel添加属性
CurrentPerson
,并将其绑定到列表框的
SelectedItem
属性

大概是这样的:

视图模型:

public Person CurrentPerson
{
    get { return _currentPerson; }
    set
    {
        if(value == _currentPerson) return;
        _currentPerson = value;

        NotifyOfPropertyChange("CurrentPerson");
    }
}
视图:



+1:我通常绑定到SelectedValue,但我记得SelecteItem属性有问题。@Baboon:这不是个好主意
SelectedItem
是整个对象
SelectedValue
是由
SelectedValuePath
定义的对象的一部分。如果您过去在
SelectedItem
方面遇到了一些问题,那么很可能是其他问题
SelectedItem
确实是正确的属性。还有一个问题:VS告诉我它无法解决NotifyOfPropertyChange(“CurrentPerson”)。这只是一个引发
PropertyChanged
事件的小助手方法。您可以通过任何方式将NotifyOfPropertyChange更改为OnPropertyChange,这样可以吗?
<ListBox SelectedItem="{Binding CurrentPerson}" ...>