Assumendo un codice come qui di seguito,Come creare comandi associabili nel controllo personalizzato?
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 ??
Nel mio SomeCustomControl, ho bisogno di sostenere "legame di ICommand in XAML". Capisco che DependencyProperties potrebbe essere vincolante in questo modo, ma in questo caso devo associare ICommand.
Qualcuno può suggerire qual è il modo migliore per farlo? Qualsiasi materiale o collegamento suggerito sarebbe utile perché mi manca una direzione.
EDIT 1) posso usare il DataContext SomeView in SomeCustomControl. C'è più logica e separazione tra i due che non posso sciogliere. Devo 'mantenere un riferimento di Ricarica/Salva ICommands da qualche parte nel mio SomeCustomControl.
Grazie mille.
Vuoi dire che posso associare direttamente un ICommand istanza di una proprietà in un controllo ?? Inoltre, per cosa è "CreateReloadCommand"? Questa istanza di comando verrà creata in ViewModel e SomeCustomControl deve solo memorizzare quel riferimento di istanza (usando l'associazione xaml). –
È possibile associare il valore del tipo ICommand a qualsiasi cosa si desideri, la proprietà di dipendenza più significativa per l'associazione è 'ButtonBase.CommandProperty'. 'CreateReloadCommand' è un metodo che crea il tuo comando - Non volevo scrivere il codice di creazione e inizializzazione del comando. Quando stavo scrivendo la mia risposta, hai metodi per i comandi nel tuo codice (li hai cambiati in seguito). –