private static void isReadOnlyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { TagPickerView view = (TagPickerView)d; bool isReadOnly = (bool)e.NewValue; view.addButton.IsEnabled = !isReadOnly; view.clearButton.IsEnabled = !isReadOnly; view.addTagAutoCompleteBox.IsEnabled = !isReadOnly; view.tagListBox.IsEnabled = !isReadOnly; }
static void tagsChangedCallback(DependencyObject o, DependencyPropertyChangedEventArgs e) { TagPickerView control = (TagPickerView)o; ObservableCollection <Tag> tags = (ObservableCollection <Tag>)e.NewValue; control.selectedTags.Clear(); // WeakEventManager info: // http://www.kolls.net/blog/?p=17 if (e.OldValue != null) { WeakEventManager <ObservableCollection <Tag>, NotifyCollectionChangedEventArgs> .RemoveHandler( control.tagListBox.ItemsSource as ObservableCollection <Tag>, "CollectionChanged", control.tagPickerTags_CollectionChanged); } control.tagListBox.ItemsSource = tags; if (e.NewValue != null) { WeakEventManager <ObservableCollection <Tag>, NotifyCollectionChangedEventArgs> .AddHandler( control.tagListBox.ItemsSource as ObservableCollection <Tag>, "CollectionChanged", control.tagPickerTags_CollectionChanged); } }