public EditValueWindow(KeyVal val)
        {
            var    hndl  = new WindowInteropHelper(this).EnsureHandle();
            IntPtr brush = CreateSolidBrush(uint.MinValue);

            SetClassLong(hndl, -10, brush);

            SetWindowTheme(hndl, "DarkMode_Explorer", IntPtr.Zero);

            int attrValue = 1; //TRUE

            DwmSetWindowAttribute(hndl, 20, ref attrValue, Marshal.SizeOf(typeof(int)));

            //DARK THEME ^

            currentKeyVal = val;

            InitializeComponent();
            ValueNameTextBox.Text = val.Name;

            if (val.DataTypeEnum == DataTypeEnum.RegUwpString)
            {
                var componentControl = new StringComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(250);
                ResizeMode = System.Windows.ResizeMode.CanResizeWithGrip;
            }
            else if (val.DataTypeEnum == DataTypeEnum.RegUwpBoolean)
            {
                var componentControl = new BooleanComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(154);
            }
            else if ((int)val.DataTypeEnum >= (int)DataTypeEnum.RegUwpByte &&
                     (int)val.DataTypeEnum <= (int)DataTypeEnum.RegUwpDouble)    //byte, int16, uint16, int32, uint32, int64, uint64, double, single
            {
                var componentControl = new IntComponent(val.DataTypeEnum);
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(154);
            }
            else if (val.DataTypeEnum == DataTypeEnum.RegUwpDateTimeOffset)
            {
                var componentControl = new DateTimeOffsetComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(154);
            }
            else if (val.DataTypeEnum == DataTypeEnum.RegUwpChar)
            {
                var componentControl = new CharComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(154);
            }
            else if (val.DataTypeEnum == DataTypeEnum.RegUwpGuid)
            {
                var componentControl = new GuidComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(154);
            }
            else if (val.DataTypeEnum == DataTypeEnum.RegUwpRect)
            {
                var componentControl = new RectComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(154);
            }
            else if (val.DataTypeEnum == DataTypeEnum.RegUwpPoint || val.DataTypeEnum == DataTypeEnum.RegUwpSize)
            {
                var componentControl = new PointSizeComponent(val.DataTypeEnum);
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(154);
            }
            else
            {
                unimplementedTxt.Visibility = System.Windows.Visibility.Visible;
            }

            Title = $"Edit value [type: {val.DataTypeEnum}]";

            valueDataSet?.SetValueData(val.Data);
            if (valueDataSet != null)
            {
                valueDataSet.PropertyChanged += ValueDataSet_PropertyChanged;
            }
        }
        private void ValueTypeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var    hndl  = new WindowInteropHelper(this).EnsureHandle();
            IntPtr brush = CreateSolidBrush(uint.MinValue);

            SetClassLong(hndl, -10, brush);

            SetWindowTheme(hndl, "DarkMode_Explorer", IntPtr.Zero);

            int attrValue = 1; //TRUE

            DwmSetWindowAttribute(hndl, 20, ref attrValue, Marshal.SizeOf(typeof(int)));

            //DARK THEME ^

            var val = (DataTypeEnum)ValueTypeComboBox.SelectedItem;

            if (valueDataSet != null)
            {
                valueDataSet.PropertyChanged -= ValueDataSet_PropertyChanged;
                valueDataSet = null;
                ContainerGrid.Children.Clear();

                //TODO: additional check when "if key !exists" is implemented
                OkButton.IsEnabled = true;
            }

            if (val == DataTypeEnum.RegUwpString)
            {
                var componentControl = new StringComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(250);
                ResizeMode = ResizeMode.CanResizeWithGrip;
            }
            else if (val == DataTypeEnum.RegUwpBoolean)
            {
                var componentControl = new BooleanComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(210);
                ResizeMode = ResizeMode.NoResize;
            }
            else if ((int)val >= (int)DataTypeEnum.RegUwpByte &&
                     (int)val <= (int)DataTypeEnum.RegUwpDouble)    //byte, int16, uint16, int32, uint32, int64, uint64, double, single
            {
                var componentControl = new IntComponent(val);
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(210);
                ResizeMode = ResizeMode.NoResize;
            }
            else if (val == DataTypeEnum.RegUwpDateTimeOffset)
            {
                var componentControl = new DateTimeOffsetComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(210);
                ResizeMode = ResizeMode.NoResize;
            }
            else if (val == DataTypeEnum.RegUwpChar)
            {
                var componentControl = new CharComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(210);
                ResizeMode = ResizeMode.NoResize;
            }
            else if (val == DataTypeEnum.RegUwpGuid)
            {
                var componentControl = new GuidComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(210);
                ResizeMode = ResizeMode.NoResize;
            }
            else if (val == DataTypeEnum.RegUwpRect)
            {
                var componentControl = new RectComponent();
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(210);
                ResizeMode = ResizeMode.NoResize;
            }
            else if (val == DataTypeEnum.RegUwpPoint || val == DataTypeEnum.RegUwpSize)
            {
                var componentControl = new PointSizeComponent(val);
                ContainerGrid.Children.Add(componentControl);
                valueDataSet = componentControl;
                SetMinHeightAndHeight(210);
                ResizeMode = ResizeMode.NoResize;
            }

            valueDataSet.PropertyChanged += ValueDataSet_PropertyChanged;
        }