Esempio n. 1
0
        private void OnValueChangedEvent(object sender, RangeBaseValueChangedEventArgs args)
        {
            if (m_toolTip is ToolTip toolTip)
            {
                toolTip.Content = GetToolTipString();

                // ToolTip doesn't currently provide any way to re-run its placement logic if its placement target moves,
                // so toggling IsEnabled induces it to do that without incurring any visual glitches.
                toolTip.IsEnabled = false;
                toolTip.IsEnabled = true;
            }

            DependencyObject currentObject     = this;
            ColorPicker      owningColorPicker = null;

            while (currentObject != null && (owningColorPicker = currentObject as ColorPicker) == null)
            {
                currentObject = VisualTreeHelper.GetParent(currentObject);
            }

            if (owningColorPicker != null)
            {
                Color oldColor = owningColorPicker.Color;
                Hsv   hsv      = ColorConversion.RgbToHsv(ColorConversion.RgbFromColor(oldColor));
                hsv.V = args.NewValue / 100.0;
                Color newColor = ColorConversion.ColorFromRgba(ColorConversion.HsvToRgb(hsv));

                ColorPickerSliderAutomationPeer peer = FrameworkElementAutomationPeer.FromElement(this) as ColorPickerSliderAutomationPeer;
                peer.RaisePropertyChangedEvent(oldColor, newColor, (int)(Math.Round(args.OldValue)), (int)(Math.Round(args.NewValue)));
            }
        }
Esempio n. 2
0
        private string GetToolTipString()
        {
            uint sliderValue = (uint)(Math.Round(this.Value));

            if (this.ColorChannel == ColorPickerHsvChannel.Alpha)
            {
                return(StringUtil.FormatString(
                           ResourceAccessor.GetLocalizedStringResource(ResourceAccessor.SR_ToolTipStringAlphaSlider),
                           sliderValue));
            }
            else
            {
                ColorPicker parentColorPicker = GetParentColorPicker();
                if (parentColorPicker != null && DownlevelHelper.ToDisplayNameExists())
                {
                    Hsv    currentHsv = parentColorPicker.GetCurrentHsv();
                    string localizedString;

                    switch (this.ColorChannel)
                    {
                    case ColorPickerHsvChannel.Hue:
                        currentHsv.H    = this.Value;
                        localizedString = ResourceAccessor.GetLocalizedStringResource(ResourceAccessor.SR_ToolTipStringHueSliderWithColorName);
                        break;

                    case ColorPickerHsvChannel.Saturation:
                        localizedString = ResourceAccessor.GetLocalizedStringResource(ResourceAccessor.SR_ToolTipStringSaturationSliderWithColorName);
                        currentHsv.S    = this.Value / 100;
                        break;

                    case ColorPickerHsvChannel.Value:
                        localizedString = ResourceAccessor.GetLocalizedStringResource(ResourceAccessor.SR_ToolTipStringValueSliderWithColorName);
                        currentHsv.V    = this.Value / 100;
                        break;

                    default:
                        throw new InvalidOperationException("Invalid ColorPickerHsvChannel.");                                 // Uno Doc: 'throw winrt::hresult_error(E_FAIL);'
                    }

                    return(StringUtil.FormatString(
                               localizedString,
                               sliderValue,
                               ColorHelper.ToDisplayName(ColorConversion.ColorFromRgba(ColorConversion.HsvToRgb(currentHsv)))));
                }
                else
                {
                    string localizedString;
                    switch (this.ColorChannel)
                    {
                    case ColorPickerHsvChannel.Hue:
                        localizedString = ResourceAccessor.GetLocalizedStringResource(ResourceAccessor.SR_ToolTipStringHueSliderWithoutColorName);
                        break;

                    case ColorPickerHsvChannel.Saturation:
                        localizedString = ResourceAccessor.GetLocalizedStringResource(ResourceAccessor.SR_ToolTipStringSaturationSliderWithoutColorName);
                        break;

                    case ColorPickerHsvChannel.Value:
                        localizedString = ResourceAccessor.GetLocalizedStringResource(ResourceAccessor.SR_ToolTipStringValueSliderWithoutColorName);
                        break;

                    default:
                        throw new InvalidOperationException("Invalid ColorPickerHsvChannel.");                                 // Uno Doc: 'throw winrt::hresult_error(E_FAIL);'
                    }

                    return(StringUtil.FormatString(
                               localizedString,
                               sliderValue));
                }
            }
        }