void scriptitem_Click(object sender, RoutedEventArgs e)
        {
            var menuitem = e.Source as MenuItem;
            EngineManagerViewModel view = (this.DataContext as EngineManagerViewModel);

            e.Handled = true;
            if (view.SelectedGameObjects.Count == 0)
            {
                return;
            }
            string scriptname = menuitem.DataContext as String;

            EditorSubsystemManaged.getInstance().QueueAction(() =>
            {
                foreach (GameObject g in view.SelectedGameObjects)
                {
                    CScript cs     = CastingHelper.CastTo <CScript>(g.RequireComponentByName("CScript"));
                    cs.scriptAsset = AssetManager.getInstance().GetAsset(scriptname);
                }
                Dispatcher.BeginInvoke(new Action(() =>
                {
                    ComponentListViewControl.GetBindingExpression(ListView.ItemsSourceProperty).UpdateTarget();
                }));
            });
        }
        void menu_item_Click(object sender, RoutedEventArgs e)
        {
            var menuitem = e.Source as MenuItem;
            EngineManagerViewModel view = (this.DataContext as EngineManagerViewModel);

            e.Handled = true;
            if (view.SelectedGameObjects.Count == 0)
            {
                return;
            }
            string compname = menuitem.DataContext as String;

            EditorSubsystemManaged.getInstance().QueueAction(() =>
            {
                foreach (GameObject g in view.SelectedGameObjects)
                {
                    g.RequireComponentByName(compname);
                }
                Dispatcher.Invoke(() =>
                {
                    ComponentListViewControl.GetBindingExpression(ListView.ItemsSourceProperty).UpdateTarget();
                });
            });
        }