private void MenuItem_AddRoot(object sender, RoutedEventArgs e)
        {
            var cvm  = new ComponentViewModel();
            var form = new ComponentForm
            {
                DataContext = cvm,
                Owner       = this
            };
            var result = form.ShowDialog();

            if (!result.HasValue)
            {
                return;
            }
            if (!result.Value)
            {
                return;
            }

            if (cvm.Product == null)
            {
                return;
            }
            _viewModel.Products.Add(cvm.Product);
            CollectionViewSource.GetDefaultView(ProductsTreeView.ItemsSource).Refresh();
        }
        private void MenuItem_Add(object sender, RoutedEventArgs e)
        {
            // получить Id выьранного элемента, запустить форму с этим парамметром
            if (_selectProduct == null)
            {
                return;
            }
            var cvm  = new ComponentViewModel(_selectProduct, true);
            var form = new ComponentForm(_selectProduct, true)
            {
                DataContext = cvm,
                Owner       = this
            };
            var result = form.ShowDialog();

            if (!result.HasValue)
            {
                return;
            }
            if (!result.Value)
            {
                return;
            }

            _selectProduct.ProductCollection.Add(cvm.Product);
            CollectionViewSource.GetDefaultView(ProductsTreeView.ItemsSource).Refresh();
        }
        private async void Button_Ok(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(TbDes.Text))
            {
                LabelMessage.Content = "Введите обозначение";
                return;
            }

            if (!int.TryParse(TbQ.Text, out var result))
            {
                LabelMessage.Content = "Введите число в строку колличество";
                return;
            }

            var designation = TbDes.Text.Trim();
            var name        = TbName.Text.Trim();

            _viewModel = DataContext as ComponentViewModel;

            if (_isRename)
            {
                if (_viewModel != null)
                {
                    await _viewModel.Rename(designation, name);
                }
            }
            else
            {
                if (_viewModel != null)
                {
                    var res = await _viewModel.Create(designation, name, result);

                    if (res != string.Empty)
                    {
                        // выводим сообщение (автоматом так как есть биндинг) и возвращаемся к вводу
                        return;
                    }
                }
            }
            DialogResult = true;
            Close();
        }