2011-01-19 5 views
0

D'abord, je suis désolé pour mon anglais J'espère que vous comprenez mon problème (Corrections acceptées et le prochain message sera plus correct). OK, voici mon scénario: Développement pour Windows Phone 7. Je ne peux pas utiliser les modèles XAML. Je dois créer un modèle au moment de l'exécution avec le code C#. Les seuls éléments que je dois personnaliser sont les couleurs de fond et de premier plan dans l'état inactif et quand l'utilisateur tient le bouton, et un coin arrondi pour la frontière.Créer un modèle de bouton par programme

Mise en place de la propriété Button.Style ne fonctionne que pour l'état par défaut (inactif) et je ne peux pas créer un rayon d'angle:

Style buttonStyle = new Style(typeof(Button); 

buttonStyle.Setters.Add(new Setter(Button.BackgroundProperty, new SolidColorBrush(Colors.Blue)); 
buttonStyle.Setters.Add(new Setter(Button.ForegroundProperty, new SolidColorBrush(Colors.White))); 

Button myBytton = new Button(); 
myButton.Style = buttonStyle; 

L'étape suivante a consisté à créer un CustomTemplate pour la propriété Button.Template, mais soulève toujours une exception:

CustomTemplate myTemplate = new CustomTemplate(); 
myTemplate.TargetType = typeof(Button); // Exception raises here: InvalidOperationException wihtout more info 

(code ..Continues ...)

Button myBytton = new Button(); 
myButton.Template = myTemplate; 

Tous les exemples que j'ai consultés utilisaient XAML pour CutomTemplate. Je ne sais pas comment configurer les styles pour différents états de boutons et pour le rayon de la bordure.

Si quelqu'un peut me aider ... Merci pour la lecture,

+0

Il est tout simplement pas une bonne façon, il est possible, mais l'attribution TemplateProperty sur le contrôle remplacera l'ensemble du modèle de bouton, donc vous finirez par créer le modèle à partir de zéro dans le code. La propriété TargetType est pour PropertyDescriptor utilisée par l'analyseur Xaml. Vous devriez envisager de placer le modèle dans xaml et juste l'assigner si nécessaire ou encore mieux tirer parti du mécanisme des déclencheurs afin que vous puissiez modifier ces propriétés. Faites-moi savoir de quelle manière vous aimez et je posterai le code. – baalazamon

+0

La création du contrôle dans le code présente également un autre inconvénient Silverlight ne possède pas FrameworkElementFactory et la seule façon de créer le modèle est XamlReader.Load, ce qui vous permettra de vous retrouver avec xaml dans le fichier cs ou de le lire. – baalazamon

+1

pourquoi ne pouvez-vous pas utiliser xaml? –

Répondre