2017-10-09 395 views
1

我對WPF很新穎....我遇到了這個問題,它說「Dropdownclosed不是routedevent」。這裏是我的代碼:WPF DataGridComboBoxColumn DropdownClosed事件

<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> 

請幫忙,謝謝。

+0

相關: [如何讓彈出框關閉後直接適當地設置焦點](https://stackoverflow.com/questions/9710013/how-to-get-a-combobox-to-appropriately-set-focus-directly-after -the-彈出窗口關閉) – mcalex

+0

謝謝。如果您發佈它,我可以將其標記爲答案。 – Heisenberg

回答

0

正如錯誤消息所示:DropDownClosed不是RoutedEvent,因此您無法爲ComboBoxes創建樣式,並讓它們都通過EventSetter繼承該事件。

調用該事件的解決方法是使用的事件,並將其適當掛鉤。一個合適的候選人是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) 
{ 
    ... 
}