2009-02-26 8 views
0

Je suis en train de piéger l'événement Click un bouton qui est dans un ResourceDictionary mais je reçois une erreur:piège l'événement de clic pour un bouton qui est dans le ResourceDictionary

'WpfApplication1.MyResourceDictionary' does not contain a definition for 'GetTemplateChild' and no extension method 'GetTemplateChild' accepting a first argument of type 'WpfApplication1.MyResourceDictionary' could be found (are you missing a using directive or an assembly reference?) 

MyResourceDictionay.xaml. cs ressemble à ceci:

namespace WindowsApplication1 
{ 
    partial class MyResourceDictionary 
    { 
    public virtual void OnApplyTemplate() 
    { 
    Button myButton = this.GetTemplateChild("Crap") as Button; 
    } 
    } 
} 

MyResourceDictionay.xaml ressemble à ceci:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="WindowsApplication1.MyResourceDictionary" 
    x:ClassModifier="public"> 

    <ControlTemplate x:Key="ExpandablePropertyEditorTemplate"> 
    <Button x:Name="Crap" Foreground="White" Background="White"> 
     <Image Source="Controls\check.png"/> 
    </Button> 
    </ControlTemplate> 
</ResourceDictionary> 

Toute aide?

Répondre

0

Si vous essayez de rechercher dans un dictionnaire de ressources, vous devez utiliser la fonction FindName (chaîne), pas GetTemplateChild (chaîne).

Même si vous recherchez un contrôle enfant dans le modèle du contrôle actuel, vous devez utiliser Template.FindName (chaîne, FrameworkElement templatedParent) et non GetTemplateChild (chaîne).

Si cela n'a pas aidé, veuillez développer votre description. Si vous avez un code derrière un fichier, vous pouvez généralement ajouter le gestionnaire directement dans le code XAML et l'attacher au code derrière (même si le contrôle se trouve dans un dictionnaire, vous pouvez souvent le faire).

J'espère que cela aide.

Questions connexes