【问题标题】:WPF DataGridComboBoxColumn DropdownClosed eventsWPF DataGridComboBoxColumn DropdownClosed 事件
【发布时间】:2017-10-09 17:09:53
【问题描述】:

我对 WPF 很陌生....我遇到了这个问题,上面写着“dropdownclose 不是 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>

请帮忙,谢谢。

【问题讨论】:

标签: wpf datagridcomboboxcolumn


【解决方案1】:

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

调用事件的一种解决方法是使用 RoutedEvent 的事件,并适当地挂钩。合适的候选人是Loaded。关注Alain's answer here获取Loaded事件:

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

从加载的事件,可以到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)
{
  ...
}

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 2016-10-01
    • 2011-08-03
    • 2010-12-15
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多