protected override void OnPropertyChanged([CallerMemberName] string propertyName = null) { if (propertyName == ItemsSourceProperty.PropertyName) { _children.IsReadOnly = ItemsSource != null; } else if (propertyName == SelectedItemProperty.PropertyName) { UpdateCurrentPage(); } else if (propertyName == "CurrentPage" && ItemsSource != null) { if (CurrentPage == null) { SelectedItem = null; } else { int index = _templatedItems.IndexOf(CurrentPage); SelectedItem = index != -1 ? _templatedItems.ListProxy[index] : null; } } base.OnPropertyChanged(propertyName); }