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)
{
...
}
我对 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)
{
...
}