Ho il seguente modello di controllo.
Desidero impostare la proprietà di origine per il controllo dell’immagine nel modello di controllo usando Template Binding.
Ma poiché questo è un modello di controllo per il controllo dei pulsanti e il controllo pulsante non ha la proprietà source, non posso usare TemplateBinding in questo caso.
Dal momento che devo impostare immagini diverse per diverse istanze di pulsante, non riesco a hardcode il percorso.
Per favore fatemi sapere come affrontare questa situazione.
Suggerirei di utilizzare risorse dinamiche, ad esempio definire il modello come segue:
E usalo in questo modo:
TemplateBinding è un “binding” leggero, non supporta alcune funzionalità del Binding tradizionale, come la conversione del tipo automatico usando i convertitori di tipi noti associati alla proprietà target (come la conversione dell’URI della stringa in un’istanza BitmapSource).
Il seguente codice può funzionare correttamente:
Non hai davvero detto come ti aspetti che i consumatori del tuo pulsante impostino la fonte. È ansible utilizzare la proprietà Button.Tag
, ad esempio, e quindi associare a quella nel modello. O potresti definire il tuo controllo:
public class ImageButton : Button { // add Source dependency property a la Image }
E poi il modello:
Non sono sicuro di aver capito bene il tuo problema, ma perché non usi ContentPresenter? Permette di spostare il codice per la tua immagine al livello più alto.
... ...