private void OnSearchTypeChanged(object sender, SelectionChangedEventArgs e)
 {
     if (ScanValueTextBox == null)
     {
         return;
     }
     ScanValueTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource(); // Update input validation
 }
        /// GUI buttons ////////////////////////////////////////////////
        private void SearchButtonClick(object sender, RoutedEventArgs e)
        {
            if (!ViewModel.InterfaceEnabled)
            {
                if (SearchThread != null)
                {
                    SearchThread.Abort();
                    SearchThread = null;
                }

                StopScan();
                return;
            }

            var scanValueValidation = ScanValueValidationRule.ExternalValidate(ViewModel.ScanValue);

            if (!scanValueValidation.IsValid)
            {
                ScanValueTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource(); // Update input validation
                return;
            }

            if (!InitProcessManager())
            {
                return;
            }

            SearchButton.Content       = "Cancel";
            ViewModel.InterfaceEnabled = false;

            BackupLastScan();
            ViewModel.VisibleResults.Clear();

            SearchThread = new Thread(SearchAsync);
            SearchThread.Start();
        }