WPF DataGridComboBoxColumn DropdownClosed 事件

WPF DataGridComboBoxColumn DropdownClosed events

我对 WPF 很陌生....我 运行 进入了这个问题 "The dropdownclosed is not a routedevent"。这是我的代码:

<DataGridComboBoxColumn x:Name="Fleet_Combo" Header="Fleet" Width = "30*" ItemsSource="{Binding acTypeFleet}" SelectedItemBinding="{Binding Fleet,Mode=TwoWay}">
                    <DataGridComboBoxColumn.EditingElementStyle>
                        <Style TargetType="ComboBox">
                            <EventSetter Event="SelectionChanged" Handler="FleetComboBox_SelectionChanged"/>
                            <EventSetter Event="DropDownClosed" Handler="ComboBox_DropDownClosed"/>
                        </Style>
                    </DataGridComboBoxColumn.EditingElementStyle>                        
                </DataGridComboBoxColumn>

请帮忙,谢谢。

如错误消息所述:DropDownClosed 不是 RoutedEvent,因此您无法为 ComboBox 创建样式并让它们都通过 EventSetter 继承事件。

调用事件的解决方法是使用 RoutedEvent 的事件,并适当地挂接到该事件。合适的候选人是 Loaded。按照 Alain's answer here 获取 Loaded 事件:

<Style x:Key="ComboBoxCellStyle" TargetType="ComboBox">
  <EventSetter Event="Loaded" Handler="ComboBox_Loaded" />
</Style>

从loaded事件中,可以得到DropDownClosed事件

private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
  ((ComboBox)sender).DropDownClosed -= ComboBox_OnDropDownClosed;
  ((ComboBox)sender).DropDownClosed += new 
     System.EventHandler(ComboBox_OnDropDownClosed);
}

并从那里调用适当的处理程序:

void ComboBox_OnDropDownClosed(object sender, System.EventArgs e)
{
  ...
}