Wpf 试图从DropDownClosed事件处理程序中的DataGrid内的ComboBox DataTemplate中获取当前选定的项

Wpf 试图从DropDownClosed事件处理程序中的DataGrid内的ComboBox DataTemplate中获取当前选定的项,wpf,combobox,datagrid,wpfdatagrid,datatemplate,Wpf,Combobox,Datagrid,Wpfdatagrid,Datatemplate,我以前有一个ListView,它显示了“Player”对象属性的ObservableCollection,我正试图将其转换为DataGrid。我的大部分工作正常,但目前在查看一个特定属性(状态)的更改时遇到一些问题,该属性由组合框表示。其思想是允许玩家在一组表示“活着、死了、中毒”等的枚举之间覆盖“状态”值。我已经连接了一个EventHandler,当ComboBox关闭时,在该处理程序中,尝试作为玩家抓取发送者对象,以便发送有效的玩家值 这里是XAML的一个片段,我在这里通过DataTempl

我以前有一个ListView,它显示了“Player”对象属性的ObservableCollection,我正试图将其转换为DataGrid。我的大部分工作正常,但目前在查看一个特定属性(状态)的更改时遇到一些问题,该属性由组合框表示。其思想是允许玩家在一组表示“活着、死了、中毒”等的枚举之间覆盖“状态”值。我已经连接了一个EventHandler,当ComboBox关闭时,在该处理程序中,尝试作为玩家抓取发送者对象,以便发送有效的玩家值

这里是XAML的一个片段,我在这里通过DataTemplate创建ComboBox

<DataGridTemplateColumn Header="Status">
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox Name="cbStatus" 
                      ItemsSource={Binding Source={StaticResource statusTypes}}" 
                      SelecteItem="{Binding statusType, Mode=TwoWay}" 
                      DropDownClosed="cbStatusType_DropDownClosed"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
但是,当我调试新的PlayerOverrided时,当组合框关闭并选择一个新值时,我没有看到该值在PlayerOverrided中被捕获


这正是我在使用GridViewColumn.CellTemplates的ListView中所做的,它工作得很好。不确定为什么状态值返回为最初设置的值,而不是玩家从组合框中选择的值。

必须将
SelectedItemBinding
上的
UpdateSourceTrigger
设置为
PropertyChanged
,它可以工作。不确定为什么必须在DataGrid中显式设置,而我不需要在ListView中执行此操作

SelectedItem={"Binding statusType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem={"Binding statusType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"