System.Windows.Controls.ComboBox
eredita da System.Windows.Controls.Primitives.Selector
, che ha un evento associato Selected
.
Un evento collegato consente di associare un gestore per un evento particolare a un elemento figlio anziché al padre che definisce effettivamente l'evento, anche se né l'oggetto che potenzialmente genera l'evento né l'istanza di gestione destinazione definiscono o altrimenti " possedere "quell'evento nel loro spazio dei nomi.
System.Windows.Controls.Primitives.Selector
ha un campo SelectedEvent
, che supporta l'evento allegato Selected
.
Il motivo dell'evento Selected
è tale che è possibile aggiungere un gestore di eventi a un controllo che verrà eseguito quando uno dei numerosi controlli figlio rilancia l'evento. È molto più conveniente di collegare i gestori di eventi a ciascuno degli ComboBoxItem
.
Per quanto riguarda il motivo per cui è incluso nell'intelligence dell'editor del codice XAML; Credo che sia un bug. La classe Selector
ha un campo pubblico per l'evento selezionato:
public static readonly RoutedEvent SelectedEvent = EventManager.RegisterRoutedEvent(
"Selected", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Selector));
Ma non si può aggiungere un gestore per l'evento perché la classe Selector
non definisce l'evento come questo:
public event RoutedEventHandler Selected
{
add
{
AddHandler(SelectedEvent, value);
}
remove
{
RemoveHandler(SelectedEvent, value);
}
}
Quindi non ha senso che sia incluso nell'intelligence per ComboBox
.
Ma, ListBoxItem
, che è la classe base per ComboBoxItem
non definisce l'evento per voi di collegare i gestori, in modo da poter collegare i gestori alle ComboBoxItems
fonte
2015-09-09 22:23:02
grazie. ma come dici tu, questo evento ha significato solo su ListBoxItem e sui suoi eredi. In tal caso, per ciò che definisce evento ** allegato **, si tratta del normale comportamento dell'evento standard. – dovid
Non ti capisco –