public static void SetBinding(object target, string targetPropertyPath, BidirectionalBinding binding)
        {
            binding.BindableTarget = new WeakReference(target);
            binding.TargetPath     = targetPropertyPath;
            binding.InnerSetBinding();

            BidirectionalBindingPool.Add(binding);
            CleanBindingPool();
        }
        public static void SetBinding(
            object source, string sourcePropertyPath,
            object target, string targetPropertyPath)
        {
            var binding = new BidirectionalBinding(source, sourcePropertyPath, target, targetPropertyPath);

            BidirectionalBindingPool.Add(binding);
            CleanBindingPool();
        }
        private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
        {
            miaoViewModel = new MiaoViewModel()
            {
                Lord = "Na"
            };
            wangViewModel = new WangViewModel();

            MiaoPanel.DataContext = miaoViewModel;
            WangPanel.DataContext = wangViewModel;



            BidirectionalBindingOperations.SetBinding(
                miaoViewModel, nameof(miaoViewModel.Lord),
                wangViewModel, nameof(wangViewModel.Host));


            Jgrass.Tools.Binding.BidirectionalBinding binding = new Jgrass.Tools.Binding.BidirectionalBinding(miaoViewModel, nameof(miaoViewModel.MiaoAge))
            {
                ValueConverter = new IntToStringClrConverter()
            };
            BidirectionalBindingOperations.SetBinding(wangViewModel, nameof(wangViewModel.WangAge), binding);
        }