/// <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;
            }
        }