2010-01-02 8 views

Répondre

9

Fondamentalement, vous devez vous connecter à l'événement chargé du contrôle. À ce stade, vous pouvez attribuer à la propriété Template. Vous pouvez récupérer le modèle à partir d'un dictionnaire de ressources. Par exemple, supposons que vous ayez un contrôle UserControl qui contient un TextBox pour lequel vous souhaitez fournir un modèle différent dans le code UserControl et que le modèle est stocké dans la propriété UserControls Resources.

<UserControl xmlns="Namespaces removed for clarity" > 
    <UserControl.Resources> 
    <ControlTemplate TargetType="TextBox" x:Key="MyTextBox"> 
     <!-- template mark up here --> 
    </ControlTemplate> 
    <UserControl.Resources> 
    <TextBox x:Name="txt" Loaded="txt_loaded" /> 
</UserControl> 

Dans le code-behind de l'UserControl que vous auriez ce code: -

void txt_Loaded(object sender, RoutedEventArgs e) 
{ 
    ((TextBox)sender).Template = (ControlTemplate)Resources["MyTextBox"]; 
} 

Dans ce cas, j'utilise le propre événement chargé de zone de texte, cependant, vous pouvez également utiliser la UserControls événement chargé.

void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    txt.Template = (ControlTemplate)Resources["MyTextBox"]; 
} 
Questions connexes