En System.Windows.Forms.Button hay una propiedad DialogResult, ¿Dónde está esta propiedad en el System.Windows.Controls.Button (WPF)?¿Dónde está Button.DialogResult en WPF?
Respuesta
No hay está incorporado Button.DialogResult, si bien puede crear su propia cuenta (si lo desea) usando un simple propiedad adjunta:
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);
};
}
});
}
Esto le permitirá escribir:
<Button Content="Click Me" my:ButtonHelper.DialogResult="True" />
y obtener un comportamiento equivalente al de Windows Forms (haciendo clic sobre el botón hace que el diálogo para cerrar y devolver el resultado especificado)
No hay Button.DialogResult
en WPF. Sólo tienes que configurar el DialogResult
del Window
a verdadero o falso:
private void buttonOK_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
@Shimmy: Esto debería ser aceptado en realidad ... – Mangesh
Sólo asegúrese de que usted ha mostrado el formulario utilizando ShowDialog
en lugar de Show
. Si hace esto último que obtendrá la siguiente excepción planteó:
InvalidOperationException fue controlada
DialogResult sólo puede ajustarse una vez creada la ventana y muestra como diálogo.
MessageBoxResult result = MessageBox.Show("","");
if (result == MessageBoxResult.Yes)
{
// CODE IN HERE
}
else
{
// CODE IN HERE
}
- 1. WPF TreeView: ¿Dónde está el método ExpandAll()
- 2. Comandos estándar de WPF - ¿Dónde está la salida?
- 3. ¿Dónde está DropWhile en Mathematica?
- 4. ¿Dónde está vcbuild en VS2010?
- 5. ¿Dónde está "catalina.out" en Windows?
- 6. ¿Dónde está Polygon.Doble en Java?
- 7. ¿Dónde está JConsole en Leopard
- 8. ¿Dónde está main() en Android?
- 9. ¿Dónde está `sequence` en Scalaz7
- 10. ¿Dónde está el espacio de nombres System.Windows.Forms.Integration?
- 11. Guava: ¿Dónde está CharEscaper?
- 12. ¿Dónde está jarsigner?
- 13. ¿Dónde está stdbool.h?
- 14. ¿Dónde está erase_if?
- 15. Dónde está Microsoft.Sharepoint.IdentityModel.dll
- 16. MonoTouch: ¿Dónde está Frame.Origin?
- 17. ¿Dónde está Request.CreateErrorResponse?
- 18. ¿Dónde está javax.servlet?
- 19. ¿Dónde está App.config?
- 20. ¿Dónde está System.ServiceModel.Web.dll?
- 21. ¿Dónde está pyside-uic?
- 22. ¿Dónde está Boost.Process?
- 23. ¿Dónde está shared_ptr?
- 24. Python: ¿Dónde está freeze.py?
- 25. ¿Dónde está la encapsulación?
- 26. ¿Dónde está FragmentActivity # onDetachFragment?
- 27. ¿Dónde está ClaimTypes.IdentityProvider?
- 28. ¿Dónde está Float # to_d?
- 29. ¿Dónde está System.Windows.Threading.DispatcherTimer?
- 30. Dónde está CodeGenerationTools
¡Aprendí cosas nuevas aquí, este attaching, eventho no voy a usarlo en este caso, seguro que será útil! muchas gracias – Shimmy
Nunca supe del Func GetWindow, ¡eso es simplemente increíble! – Shimmy
Una gran solución, hecha mayor en su simplicidad. –