static void OnSelectedItemChanged(Control sender, AttachedPropertyChangedEventArgs<object> e) { IItemsSourceFeature feature = sender.GetItemsSourceFeature(); if(feature != null) { Action<Control> selectionChangedHandler = sender.GetValue(HandlerProperty); if(selectionChangedHandler == null) { selectionChangedHandler = OnSelectionChanged; sender.SetValue(HandlerProperty, selectionChangedHandler); feature.AddSelectionChangedCallback(sender, selectionChangedHandler); } feature.SetSelectedItem(sender, e.NewValue); sender.SetSelectedItem(feature.GetSelectedItem(sender)); //TODO test recursion or add assert } }
public static object GetValue(Control control, string property) { return control.GetValue(property, true); }