Domanda

In System.Windows.Le forme.Pulsante C'è una proprietà Dialogresult, dov'è questa proprietà in System.Windows.Controlli.Pulsante (WPF)?

È stato utile?

Soluzione

Non esiste un pulsante integrato.Dialogresult, ma puoi crearne uno tuo (se lo desideri) usando una semplice proprietà allegata:

public class ButtonHelper
{
  // Boilerplate code to register attached property "bool? DialogResult"
  public static bool? GetDialogResult(DependencyObject obj) { return (bool?)obj.GetValue(DialogResultProperty); }
  public static void SetDialogResult(DependencyObject obj, bool? value) { obj.SetValue(DialogResultProperty, value); }
  public static readonly DependencyProperty DialogResultProperty = DependencyProperty.RegisterAttached("DialogResult", typeof(bool?), typeof(ButtonHelper), new UIPropertyMetadata
  {
    PropertyChangedCallback = (obj, e) =>
    {
      // Implementation of DialogResult functionality
      Button button = obj as Button;
      if(button==null)
          throw new InvalidOperationException(
            "Can only use ButtonHelper.DialogResult on a Button control");
      button.Click += (sender, e2) =>
      {
        Window.GetWindow(button).DialogResult = GetDialogResult(button);
      };
    }
  });
}

Questo ti permetterà di scrivere:

<Button Content="Click Me" my:ButtonHelper.DialogResult="True" />

e ottenere un comportamento equivalente a Winforms (facendo clic sul pulsante fa chiudere la finestra di dialogo e restituire il risultato specificato)

Altri suggerimenti

Non c'è Button.DialogResult in wpf. Devi solo impostare il DialogResult del Window a vero o falso:

private void buttonOK_Click(object sender, RoutedEventArgs e)
{
    this.DialogResult = true;
}

Assicurati solo di aver mostrato il modulo usando ShowDialog piuttosto che Show. Se fai quest'ultimo otterrai la seguente eccezione:

InvalidOperationException non era gestita

Dialogresult può essere impostato solo dopo la creazione della finestra e mostrato come finestra di dialogo.

MessageBoxResult result = MessageBox.Show("","");

if (result == MessageBoxResult.Yes)
{
// CODE IN HERE
}
else 
{
// CODE IN HERE
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top