Associazione modello nel modello di controllo

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.

  ...   ...