public async void ShowPatternPicker(Pattern[] patterns = null) { if (!SetupPatternPicker()) { return; } if (patterns == null && _currentPattern != null) { var category = await Patterns.GetCategoryByPattern(_currentPattern); if (category != null) { patterns = category.Patterns; } } if (patterns == null) { patterns = (await Patterns.GetCategoriesAsync()).FirstOrDefault()?.Patterns; } if (patterns == null) { return; } if (_patternPickerGrid.Visibility == Visibility.Visible && _patternPickerGridView.ItemsSource is Pattern[] currentPatterns && currentPatterns.Count() == patterns.Count() && currentPatterns.Except(patterns).Count() == 0) { return; } _patternPickerGridView.ItemsSource = patterns; if (_currentPattern != null && patterns.Contains(_currentPattern)) { _patternPickerGridView.SelectedItem = _currentPattern; } else { _patternPickerGridView.SelectedItem = null; } _patternPickerGrid.Visibility = Visibility.Visible; }