title: Xamarin C# - Android - Prevent an AlertDialog from closing on PositiveButton click
body: <p>I'm new to Xamarin and I don't know how to do the following in c#. I want to prevent an alertdialog from closing when clicking on the Positive/Negative buttons. I need to do some validation on the input first. If the input is correct, the dialog can close, else I will show a message with instructions. Basically, I have the following code:</p>
  
  <pre><code>private void CreateAddProjectDialog() { 
      //some code
      var alert = new AlertDialog.Builder (this);
      alert.SetTitle ("Create new project");
      alert.SetView (layoutProperties);
      alert.SetCancelable (false);
      alert.SetPositiveButton("Create", HandlePositiveButtonClick);
      alert.SetNegativeButton("Cancel", HandelNegativeButtonClick);
  }
  
  private void HandlePositiveButtonClick (object sender, EventArgs e) {
      //Do some validation here and return false (prevent closing of dialog) if invalid, else close....
  }
  </code></pre>
  
  <p>Now, I red the following post on StackOverflow: <a href="https://stackoverflow.com/questions/2620444/how-to-prevent-a-dialog-from-closing-when-a-button-is-clicked">How to prevent a dialog from closing when a button is clicked</a></p>
  
  <p>I think the code below (taken from the thread) has the solution, but I don't know how to rewrite my c# code to implement the Java:</p>
  
  <pre><code>AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  builder.setMessage("Test for preventing dialog close");
  builder.setPositiveButton("Test", 
      new DialogInterface.OnClickListener()
      {
          @Override
          public void onClick(DialogInterface dialog, int which)
          {
              //Do nothing here because we override this button later to change the close behaviour. 
              //However, we still need this because on older versions of Android unless we 
              //pass a handler the button doesn't get instantiated
          }
      });
  AlertDialog dialog = builder.create();
  dialog.show();
  //Overriding the handler immediately after show is probably a better approach than     OnShowListener as described below
  dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener()
  {
  
      @Override
      public void onClick(View v)
      {
          Boolean wantToCloseDialog = false;
          //Do stuff, possibly set wantToCloseDialog to true then...
          if(wantToCloseDialog)
                  dismiss();
          //else dialog stays open. Make sure you have an obvious way to close the dialog especially if you set cancellable to false.
      }
  });
  </code></pre>
  
  <p>How to code this in c#? Especially the override part in the setPositiveButton area...</p>