/// <summary>
        ///
        /// </summary>
        /// <param name="textBoxTxt"></param>
        /// <param name="iContent"></param>
        private void TextBoxValueChanged(string textBoxTxt, IContent iContent)
        {
            DataTableCoordinate dataTableCoordiante = iContent.Key as DataTableCoordinate;
            ConsumerRow         workingOrderRow     = dataTableCoordiante.DataRow as ConsumerRow;
            string textBoxString  = textBoxTxt;
            Guid   workingOrderId = dataTableCoordiante.Association;

            if (dataTableCoordiante.DataColumn == DataModel.Consumer.FirstNameColumn)
            {
                FluidTrade.Core.ThreadPoolHelper.QueueUserWorkItem(UpdateField, new Func <MethodResponseErrorCode>(() =>
                                                                                                                   TradingSupportWebService.UpdateConsumer(new Consumer(workingOrderRow)
                {
                    FirstName = textBoxString, WorkingOrderId = workingOrderId
                })));
            }

            if (dataTableCoordiante.DataColumn == DataModel.Consumer.LastNameColumn)
            {
                FluidTrade.Core.ThreadPoolHelper.QueueUserWorkItem(UpdateField, new Func <MethodResponseErrorCode>(() =>
                                                                                                                   TradingSupportWebService.UpdateConsumer(new Consumer(workingOrderRow)
                {
                    LastName = textBoxString, WorkingOrderId = workingOrderId
                })));
            }

            if (dataTableCoordiante.DataColumn == DataModel.Consumer.SocialSecurityNumberColumn)
            {
                FluidTrade.Core.ThreadPoolHelper.QueueUserWorkItem(UpdateField, new Func <MethodResponseErrorCode>(() =>
                                                                                                                   TradingSupportWebService.UpdateConsumer(new Consumer(workingOrderRow)
                {
                    SocialSecurityNumber = textBoxString
                })));
            }

            if (dataTableCoordiante.DataColumn == DataModel.CreditCard.AccountBalanceColumn)
            {
                CreditCardRow creditCardRow = dataTableCoordiante.DataRow as CreditCardRow;
                FluidTrade.Core.ThreadPoolHelper.QueueUserWorkItem(UpdateField, new Func <MethodResponseErrorCode>(() =>
                                                                                                                   TradingSupportWebService.UpdateCreditCard(new CreditCard(creditCardRow)
                {
                    AccountBalance = textBoxString
                })));
            }

            if (dataTableCoordiante.DataColumn == DataModel.CreditCard.OriginalAccountNumberColumn)
            {
                CreditCardRow creditCardRow = dataTableCoordiante.DataRow as CreditCardRow;
                FluidTrade.Core.ThreadPoolHelper.QueueUserWorkItem(UpdateField, new Func <MethodResponseErrorCode>(() =>
                                                                                                                   TradingSupportWebService.UpdateCreditCard(new CreditCard(creditCardRow)
                {
                    OriginalAccountNumber = textBoxString
                })));
            }

            if (dataTableCoordiante.DataColumn == DataModel.CreditCard.AccountNumberColumn)
            {
                CreditCardRow creditCardRow = dataTableCoordiante.DataRow as CreditCardRow;
                FluidTrade.Core.ThreadPoolHelper.QueueUserWorkItem(UpdateField, new Func <MethodResponseErrorCode>(() =>
                                                                                                                   TradingSupportWebService.UpdateCreditCard(new CreditCard(creditCardRow)
                {
                    AccountNumber = textBoxString
                })));
            }

            if (dataTableCoordiante.DataColumn == DataModel.CreditCard.DebtHolderColumn)
            {
                CreditCardRow creditCardRow = dataTableCoordiante.DataRow as CreditCardRow;
                FluidTrade.Core.ThreadPoolHelper.QueueUserWorkItem(UpdateField, new Func <MethodResponseErrorCode>(() =>
                                                                                                                   TradingSupportWebService.UpdateCreditCard(new CreditCard(creditCardRow)
                {
                    DebtHolder = textBoxString
                })));
            }
        }
        /// <summary>
        /// Handlers for the ComboBox class of controls.
        /// </summary>
        /// <param name="sender">The object that originated the event.</param>
        /// <param name="routedEventArgs">The routed event arguments.</param>
        private void OnSelectorSelectionChanged(object sender, RoutedEventArgs routedEventArgs)
        {
            // The main idea of this handler is to sort out the user generated actions from the machine generated actions.  Once
            // its determined that it was a user action, a background thread is called to change the associated field to the value
            // selected by the ComboBox.
            SelectionChangedEventArgs selectionChangedEventArgs = routedEventArgs as SelectionChangedEventArgs;

            // Handle changes to ComboBox elements.
            if (selectionChangedEventArgs.OriginalSource is ComboBox)
            {
                ComboBox comboBox = selectionChangedEventArgs.OriginalSource as ComboBox;
                IContent iContent = comboBox.DataContext as IContent;

                // This filters all the ComboBox events looking for user initiated actions that are bound to the data model.
                if (InputHelper.IsUserInitiated(comboBox, ComboBox.SelectedValueProperty) &&
                    iContent != null && iContent.Key is DataTableCoordinate)
                {
                    // At this point, a ComboBox was modified by the user and it is connected to a data model field.  This will extract
                    // the coordinates of the field in the table.  That, in turn, drives the decision about how to update the shared
                    // data model.
                    DataTableCoordinate dataTableCoordiante = iContent.Key as DataTableCoordinate;
                    CreditCardRow       creditCardRow       = dataTableCoordiante.DataRow as CreditCardRow;


                    if (dataTableCoordiante.DataColumn == DataModel.CreditCard.DebtRuleIdColumn)
                    {
                        //make sure the value has changed before making a webSvc call
                        object newDebtRuleId = comboBox.SelectedValue;
                        if (newDebtRuleId == null || (Guid)newDebtRuleId == Guid.Empty)
                        {
                            newDebtRuleId = DBNull.Value;
                        }
                        object oldDebtRuleId = DBNull.Value;
                        if (creditCardRow.IsDebtRuleIdNull() == false)
                        {
                            oldDebtRuleId = creditCardRow.DebtRuleId;
                        }

                        if (object.Equals(oldDebtRuleId, newDebtRuleId) == false)
                        {
                            FluidTrade.Core.ThreadPoolHelper.QueueUserWorkItem(UpdateField, new Func <MethodResponseErrorCode>(() =>
                                                                                                                               TradingSupportWebService.UpdateCreditCard(new CreditCard(creditCardRow)
                            {
                                DebtRuleId = newDebtRuleId
                            })));
                        }
                    }
                }
            }
        }