Estoy desarrollando una aplicación en WPF usando MVVM, pero estoy atascado con los objetos ICommand.Cómo habilitar un botón con su método CanExecute
tengo una ventana que contiene algunos botones, por lo que, les unen a sus respectivos ICommand en XAML de la siguiente manera:
<Button Command="{Binding DoSomethingCommand}" Content="Do Something" />
entonces, en mi clase de vista-modelo que he escrito lo siguiente:
public class MyViewModel : ObservableObject
{
private bool isDoSomethingButtonEnabled = false;
....
public ICommand DoSomethingCommand
{
get;
private set;
}
....
....
public MyViewModel()
{
DoSomethingCommand = new DelegateCommand<String>(this.OnDoSomething, this.CanDoSomething);
}
private void OnDoSomething(String arg)
{
}
private bool CanDoSomething(String arg)
{
return isDoSomethingButtonEnabled;
}
....
}
Entonces, como necesito que mi botón no esté habilitado la primera vez que se abre la ventana, configuro mi variable isDoSomethingButtonEnabled
en false
. Y funciona, el botón está desactivado al principio, pero mi problema es que cuando cambio la variable isDoSomethingButtonEnabled
a true
en tiempo de ejecución, mi botón sigue deshabilitado.
Incluso me han hecho algunas pruebas después de cambiar la variable isDoSomethingButtonEnabled
a true
, imprimir el resultado de DoSomethingCommand.CanExecute()
y se nota "verdadero"!
Entonces, ¿qué debo hacer para habilitar mi botón?
gracias de antemano
MVVM es un patrón, que no requiere ningún clases específicas como DelegateCommand. ¿Estás usando PRISM? –
Sí, lo soy. De hecho, tengo que usarlo – Dante