control template, et xaml en mode design ?
bonjour,
j'ai créé plusieurs "control template" nikel ca marche parfait, mais ...
est il possible de faire en sorte qu'en mode design les "dependency properties" de ces "control template" apparaissent (valorisées par défaut) dans le xaml ?
je m'explique avec un exemple
mettont que j'ai créé un control template "Titre" dont la seule fonction est d'afficher un texte (je sais pas très glorieux mais c'est pour l'exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public class Titre : Control
{
public Titre ()
{
this.DefaultStyleKey = typeof(Titre);
}
#region titre
public string titre
{
get { return (string)GetValue(titreProperty); }
set { SetValue(titreProperty, value); }
}
public static readonly DependencyProperty titreProperty = DependencyProperty.Register(
"titre",
typeof(titre),
typeof(Titre),
new PropertyMetadata("ici le titre", new PropertyChangedCallback(OntitreChanged)));
private static void OntitreChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((Titre)d).OntitreChanged(e);
}
protected virtual void OntitreChanged(DependencyPropertyChangedEventArgs e)
{
}
#endregion |
et pour la partie dictionnaire de ressource :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:control="clr-namespace:MyApplication.Controls">
<Style TargetType="control:Titre" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="control:Titre">
<Grid>
<TextBlock text={TemplateBinding titre}/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary> |
si j'utilise mon control template ca marche mais lorsque je le drop dans ma page silverlight au niveau du xaml j'ai :
Code:
1 2
|
<my:Titre Height="23" x:Name="Titre1" Width="75" /> |
la propriété titre n’apparaît pas dans le Xaml bien qu'elle soit correctement valorisée et si je l'ajoute en changent sa valeur cela fonctionne
ma question est donc comment obtenir en mode design au moment de l'utilisation de mon control le code suivant (uniquement en dropant mon control)
Code:
1 2
|
<my:Titre Height="23" x:Name="Titre1" titre="ici le titre" Width="75" /> |
un attribut ?,
d'avance merci pour les pistes