首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF DataGridComboBoxColumn DropdownClosed事件

WPF DataGridComboBoxColumn DropdownClosed事件
EN

Stack Overflow用户
提问于 2017-10-09 17:09:53
回答 1查看 1.5K关注 0票数 2

我对WPF非常陌生.我遇到了这个问题,上面写着“下落不明的人不是路由狂”。这是我的代码:

代码语言:javascript
复制
<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>

帮帮忙,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-10 08:35:31

正如错误消息所述:DropDownClosed不是RoutedEvent,所以您不能为ComboBoxes创建样式并让它们都通过EventSetter继承事件。

调用该事件的解决方法是使用a RoutedEvent的事件,并适当地将其挂钩。合适的人选是Loaded。按照Alain's answer here获得加载的事件:

代码语言:javascript
复制
<Style x:Key="ComboBoxCellStyle" TargetType="ComboBox">
  <EventSetter Event="Loaded" Handler="ComboBox_Loaded" />
</Style>

从加载的事件中,您可以到达DropDownClosed事件

代码语言:javascript
复制
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
  ((ComboBox)sender).DropDownClosed -= ComboBox_OnDropDownClosed;
  ((ComboBox)sender).DropDownClosed += new 
     System.EventHandler(ComboBox_OnDropDownClosed);
}

然后调用适当的处理程序:

代码语言:javascript
复制
void ComboBox_OnDropDownClosed(object sender, System.EventArgs e)
{
  ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46651636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档