private void buttonComando_Click(object sender, RoutedEventArgs e)
        {
            //controllo selezione clienti
            if (cmbClienti.SelectedIndex == -1)
            {
                MessageBox.Show("selezionare un cliente");
                return;
            }

            MasterFile mf = MasterFile.Create();
            Utilities  u  = new Utilities();

            int IDCliente     = Convert.ToInt32(htClienti[cmbClienti.SelectedIndex].ToString());
            int IDRelazioneBC = App.MasterFile_NewID;

            try
            {
                IDRelazioneBC = Convert.ToInt32(htDate[cmbData.SelectedIndex].ToString());
            }
            catch (Exception ex)
            {
                cBusinessObjects.logger.Error(ex, "wSchedaRelazioneBC.buttonComando_Click exception");
                string log = ex.Message;
            }

            if (TipologiaAttivita == App.TipoAttivitaScheda.Delete && IDRelazioneBC == -1)
            {
                MessageBox.Show("selezionare una sessione");
                return;
            }

            App.TipoAttivitaScheda oldTipo = TipologiaAttivita;

            switch (TipologiaAttivita)
            {
            //Nuovo e salva
            case App.TipoAttivitaScheda.New:
            case App.TipoAttivitaScheda.Edit:
                //Campi Obbligatorio
                if (dtpDataNomina.SelectedIndex == -1)// !u.ConvalidaDatiInterfaccia(dtpDataNomina, "Data mancante."))
                {
                    MessageBox.Show("Selezionare un Esercizio.");
                    return;
                }

                //Controllo che questa data non sia già stata presa
                if (!mf.CheckDoppio_RelazioneBC(IDRelazioneBC, IDCliente, htSelectedDate[dtpDataNomina.SelectedIndex].ToString()))
                {
                    MessageBox.Show("Data già presente per questo cliente");
                    return;
                }

                //setto dati
                Hashtable ht = new Hashtable();
                if (TipologiaAttivita == App.TipoAttivitaScheda.New)
                {
                    tabControl1.IsEnabled = false;
                    gridButtons.IsEnabled = false;
                    loading.Visibility    = Visibility;
                    Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(delegate { }));
                    //cBusinessObjects.show_workinprogress("Prima creazione dell'albero in corso...");
                }

                ht.Add("Cliente", IDCliente);
                ht.Add("Data", htSelectedDate[dtpDataNomina.SelectedIndex].ToString());
                ht.Add("Note", txtNota.Text.Trim());

                IDRelazioneBC = mf.SetRelazioneBC(ht, IDRelazioneBC, IDCliente);

                RegistrazioneEffettuata = true;

                if (TipologiaAttivita == App.TipoAttivitaScheda.New)
                {
                    if (IDClienteImport != "-1")
                    {
                        cBusinessObjects.hide_workinprogress();
                        this.Close();
                    }



                    cBusinessObjects.SessioneIsNew = true;
                    TipologiaAttivita = App.TipoAttivitaScheda.Edit;
                    mf.SetAnafraficaStato(Convert.ToInt32(IDCliente), App.TipoAnagraficaStato.Disponibile);

                    ConfiguraMaschera();

                    foreach (DictionaryEntry item in htClienti)
                    {
                        if (Convert.ToInt32(item.Value.ToString()) == IDCliente)
                        {
                            cmbClienti.SelectedIndex = Convert.ToInt32(item.Key.ToString());
                        }
                    }

                    functionCmbClientiChanged(cmbClienti);

                    cmbData.IsEnabled = true;

                    foreach (DictionaryEntry item in htDate)
                    {
                        if (Convert.ToInt32(item.Value.ToString()) == IDRelazioneBC)
                        {
                            cmbData.SelectedIndex = Convert.ToInt32(item.Key.ToString());
                        }
                    }

                    functionCmbDataChanged(cmbData);
                    cBusinessObjects.AddSessione("RelazioneBC", cmbData.SelectedValue.ToString(), IDRelazioneBC, IDCliente);
                }

                _DatiCambiati = false;
                break;

            case App.TipoAttivitaScheda.Delete:
                //richiesta conferma
                if (MessageBoxResult.No == u.ConfermaCancellazione())
                {
                    return;
                }
                //cancellazione
                mf.DeleteRelazioneBC(IDRelazioneBC, IDCliente.ToString());
                RegistrazioneEffettuata = true;
                base.Close();
                break;

            case App.TipoAttivitaScheda.Export:
                break;
            }

            //apro tree appena creato
            if (oldTipo == App.TipoAttivitaScheda.New)
            {
                //MessageBox.Show("apro tree appena creato");
                Accedi_Click(IDRelazioneBC.ToString(), false);
            }

            //chiudo maschera
            if (TipologiaAttivita != App.TipoAttivitaScheda.Edit)
            {
                base.Close();
            }
        }