Suponiendo un código como el de abajo,¿Cómo crear comandos enlazables en el control personalizado?
public class SomeViewModel{
ICommand ReloadCommand{get...}
ICommand SaveCommand{get..}
}
//SomeView.xaml
<SomeCustomControl Reload="ReloadCommand" Save="SaveCommand" /> //NOT SURE HOW??
//SomeCustomContro.xaml
<SomeCustomControl x:Name="someCustomControl">
<Button Command={Binding ElementName=someCustomControl, Path=Reload />
<Button Command={Binding ElementName=someCustomControl, Path=Save />
</SomeCustomControl>
//SomeCustomControl.xaml.cs
..... //NOT SURE HOW TO ALLOW BINDING TO A ICOMMAND ??
En mi SomeCustomControl, tengo que apoyar "unión de ICommand en XAML". Entiendo que DependencyProperties podría vincularse así, pero en este caso necesito unir ICommand.
¿Puede alguien sugerir cuál es la mejor manera de hacerlo? Cualquier material o enlace sugerido sería útil porque me falta una dirección.
EDITAR 1) Puedo usar el DataContext SomeView en SomeCustomControl. Hay más lógica y separación entre los dos que no puedo disolver. Debo mantener una referencia de Reload/Save ICommands en algún lugar de SomeCustomControl.
Muchas gracias.
¿Quieres decir que puedo enlazar directamente una Instancia ICommand a una propiedad en un control? Además, ¿para qué sirve "CreateReloadCommand"? Esta instancia de comando se creará en ViewModel, y SomeCustomControl solo necesita almacenar esa referencia de instancia (usando el enlace xaml). –
Puede vincular el valor del tipo ICommand a lo que desee, la propiedad de dependencia más significativa para el enlace es 'ButtonBase.CommandProperty'. 'CreateReloadCommand' es un método que crea su comando; no quise escribir el código de inicialización y creación del comando. Cuando estaba escribiendo mi respuesta, tiene métodos para comandos en su código (los ha cambiado más adelante). –