/// <summary> /// SampleColorTextBox テキスト変更イベントハンドラ /// </summary> /// <param name="sender">イベント発行元</param> /// <param name="e">イベント引数</param> private void PalleteColorTextBox_TextChanged(object sender, TextChangedEventArgs e) { if (!_isSampleColorTextChangedFromUI) { return; } try { var str = this.PalleteColorTextBox.Text; if (!string.IsNullOrWhiteSpace(str)) { if (str[0] != '#') { throw new Exception(); } var colorCode = str.Substring(1, str.Length - 1); this._isRgbColorChangedFromUI = false; this._isHsvColorChangedFromUI = false; this.PalleteColor = ColorPickerItem.ColorFromCode(colorCode); this._isRgbColorChangedFromUI = true; this._isHsvColorChangedFromUI = true; this.OkButton.IsEnabled = true; } } catch (Exception err) { System.Diagnostics.Debug.WriteLine(err); this.OkButton.IsEnabled = false; } }
/// <summary> /// 選択色変更ヘルパ /// </summary> /// <param name="item1">テーマカラー 1 の選択色を指定します。</param> /// <param name="item2">テーマカラー 2 の選択色を指定します。</param> /// <param name="item3">標準カラーの選択色を指定します。</param> /// <param name="item4">色選択履歴の選択色を指定します。</param> private void SetCollectionItem(ColorPickerItem item1, ColorPickerItem item2, ColorPickerItem item3, ColorPickerItem item4) { if (ThemeColors1ListBox != null) { ThemeColors1ListBox.SelectedItem = item1; } if (ThemeColors2ListBox != null) { ThemeColors2ListBox.SelectedItem = item2; } if (StandardColorsListBox != null) { StandardColorsListBox.SelectedItem = item3; } if (RecentColorsListBox != null) { if (item4 != null) { var collection = RecentColors as Collection <ColorPickerItem>; var index = collection.IndexOf(item4); if (index < 0) { collection.Insert(0, item4); } else { var item = collection[index]; collection.Remove(item); collection.Insert(0, item); } if (collection.Count > 10) { collection.RemoveAt(collection.Count - 1); } if ((item1 == null) && (item2 == null) && (item3 == null)) { _isRecentColorChangedFromUI = false; RecentColorsListBox.SelectedItem = item4; _isRecentColorChangedFromUI = true; } else { _isRecentColorChangedFromUI = false; RecentColorsListBox.SelectedItem = null; _isRecentColorChangedFromUI = true; } } } }
/// <summary> /// OkButton クリックイベントハンドラ /// </summary> /// <param name="sender">イベント発行元</param> /// <param name="e">イベント引数</param> private void OkButton_Click(object sender, RoutedEventArgs e) { if ((this.SelectedColor == this.PalleteColor) && ((RecentColors as Collection <ColorPickerItem>).Count == 0)) { var item = new ColorPickerItem(this.PalleteColor); this.SetCollectionItem(null, null, null, item); } else { this._isSelectedColorChangedFromUI = false; this.SelectedColor = this.PalleteColor; this._isSelectedColorChangedFromUI = true; } }
/// <summary> /// SelectedColor プロパティ変更イベントハンドラ /// </summary> /// <param name="sender">イベント発行元</param> /// <param name="e">イベント引数</param> private static void OnSelectedColorPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { var control = sender as ColorPicker; if (control == null) { return; } if (!control._isTemplateApplyed) { return; } var color = (Color)e.NewValue; ColorPickerItem item; if ((item = (ThemeColors1 as Collection <ColorPickerItem>).FirstOrDefault(x => x.Color == color)) != null) { control.SetCollectionItem(item, null, null, item); } else if ((item = (ThemeColors2 as Collection <ColorPickerItem>).FirstOrDefault(x => x.Color == color)) != null) { control.SetCollectionItem(null, item, null, item); } else if ((item = (StandardColors as Collection <ColorPickerItem>).FirstOrDefault(x => x.Color == color)) != null) { control.SetCollectionItem(null, null, item, item); } else if ((item = (RecentColors as Collection <ColorPickerItem>).FirstOrDefault(x => x.Color == color)) != null) { control.SetCollectionItem(null, null, null, item); } else { item = new ColorPickerItem(color); control.SetCollectionItem(null, null, null, item); } if (control._isSelectedColorChangedFromUI) { control._isRgbColorChangedFromUI = false; control._isSampleColorTextChangedFromUI = false; control._isHsvColorChangedFromUI = false; control.PalleteColor = color; control._isRgbColorChangedFromUI = true; control._isSampleColorTextChangedFromUI = true; control._isHsvColorChangedFromUI = true; } }
/// <summary> /// 選択色変更ヘルパ /// </summary> /// <param name="item1">テーマカラー 1 の選択色を指定します。</param> /// <param name="item2">テーマカラー 2 の選択色を指定します。</param> /// <param name="item3">標準カラーの選択色を指定します。</param> /// <param name="item4">色選択履歴の選択色を指定します。</param> private void SetCollectionItem(ColorPickerItem item1, ColorPickerItem item2, ColorPickerItem item3, ColorPickerItem item4) { if (ThemeColors1ListBox != null) ThemeColors1ListBox.SelectedItem = item1; if (ThemeColors2ListBox != null) ThemeColors2ListBox.SelectedItem = item2; if (StandardColorsListBox != null) StandardColorsListBox.SelectedItem = item3; if (RecentColorsListBox != null) { if (item4 != null) { var collection = RecentColors as Collection<ColorPickerItem>; var index = collection.IndexOf(item4); if (index < 0) { collection.Insert(0, item4); } else { var item = collection[index]; collection.Remove(item); collection.Insert(0, item); } if (collection.Count > 10) { collection.RemoveAt(collection.Count - 1); } if ((item1 == null) && (item2 == null) && (item3 == null)) { _isRecentColorChangedFromUI = false; RecentColorsListBox.SelectedItem = item4; _isRecentColorChangedFromUI = true; } else { _isRecentColorChangedFromUI = false; RecentColorsListBox.SelectedItem = null; _isRecentColorChangedFromUI = true; } } } }
/// <summary> /// OkButton クリックイベントハンドラ /// </summary> /// <param name="sender">イベント発行元</param> /// <param name="e">イベント引数</param> private void OkButton_Click(object sender, RoutedEventArgs e) { if ((this.SelectedColor == this.PalleteColor) && ((RecentColors as Collection<ColorPickerItem>).Count == 0)) { var item = new ColorPickerItem(this.PalleteColor); this.SetCollectionItem(null, null, null, item); } else { this._isSelectedColorChangedFromUI = false; this.SelectedColor = this.PalleteColor; this._isSelectedColorChangedFromUI = true; } }
/// <summary> /// SelectedColor プロパティ変更イベントハンドラ /// </summary> /// <param name="sender">イベント発行元</param> /// <param name="e">イベント引数</param> private static void OnSelectedColorPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { var control = sender as ColorPicker; if (control == null) return; if (!control._isTemplateApplyed) return; var color = (Color)e.NewValue; ColorPickerItem item; if ((item = (ThemeColors1 as Collection<ColorPickerItem>).FirstOrDefault(x => x.Color == color)) != null) { control.SetCollectionItem(item, null, null, item); } else if ((item = (ThemeColors2 as Collection<ColorPickerItem>).FirstOrDefault(x => x.Color == color)) != null) { control.SetCollectionItem(null, item, null, item); } else if ((item = (StandardColors as Collection<ColorPickerItem>).FirstOrDefault(x => x.Color == color)) != null) { control.SetCollectionItem(null, null, item, item); } else if ((item = (RecentColors as Collection<ColorPickerItem>).FirstOrDefault(x => x.Color == color)) != null) { control.SetCollectionItem(null, null, null, item); } else { item = new ColorPickerItem(color); control.SetCollectionItem(null, null, null, item); } if (control._isSelectedColorChangedFromUI) { control._isRgbColorChangedFromUI = false; control._isSampleColorTextChangedFromUI = false; control._isHsvColorChangedFromUI = false; control.PalleteColor = color; control._isRgbColorChangedFromUI = true; control._isSampleColorTextChangedFromUI = true; control._isHsvColorChangedFromUI = true; } }