Bonjour à tous,
J'ai créé un UserControl personnel qui représente une sorte de boîte de dialogue (cf pièce jointe).
En particulier, il y a un Label (TitleLabel) pour le titre, et une TextBox (AmountOfMoneyField) pour y écrire.
Je voulais personnaliser ces éléments à partir du XAML, du coup j'en ai fait des dependency property comme ceci :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
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 public partial class TransferDialog : UserControl { private const String DefaultText = "Amount to transfer"; private const Decimal DefaultAmount = 0m; public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(String), typeof(TransferDialog), new UIPropertyMetadata(DefaultText, new PropertyChangedCallback(OnTitleChanged))); public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(Decimal), typeof(TransferDialog), new UIPropertyMetadata(DefaultAmount, new PropertyChangedCallback(OnValueChanged))); public String Title { get { return GetValue(TitleProperty) as String; } set { SetValue(TitleProperty, value); } } public Decimal Value { get { return (Decimal) GetValue(ValueProperty); } set { SetValue(ValueProperty, value); } }
Title pour le titre
Value pour la valeur par défaut dans la textbox
avec les callbacks qui vont bien pour notifier du changement :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public static void OnTitleChanged(DependencyObject o, DependencyPropertyChangedEventArgs args) { (o as TransferDialog).TitleLabel.Content = args.NewValue.ToString(); } public static void OnValueChanged(DependencyObject o, DependencyPropertyChangedEventArgs args) { (o as TransferDialog).AmountOfMoneyField.Text = args.NewValue.ToString(); }
Le problème c'est que lors de la création de mon UserControl (TransferDialog), les valeurs par défaut ont bien été affectées, mais les callbacks ne sont pas appelés (qui permettent de dire au Label TitleLabel et à la TextBox AmountOfMoneyField).
Du coup je sais pas comment transmettre automatiquement la valeur par défaut aux éléments qui composent mon UserControl, sans l'écrire à la main encore une fois !
Merci d'avance pour vos réponses!
Partager