voila j'ai une dependency property
et vous pourrez constater que quand on change la valeur celle ci se formate vers un TextBox (nommé block)
Code : 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
27
28
29
30
31
32
33
34
35
36
37 #region Value //---------------------------------------------------------------------------------------------------- [Localizability(LocalizationCategory.Text)] publicdouble Value { get { return (double)base.GetValue(ValueProperty); } set { base.SetValue(ValueProperty, value); } } //---------------------------------------------------------------------------------------------------- publicstaticreadonlyDependencyProperty ValueProperty = DependencyProperty.Register( "Value", typeof(double), typeof(SASVoltage), //new PropertyMetadata(false)); newFrameworkPropertyMetadata((double)0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure, newPropertyChangedCallback(OnValueChanged), newCoerceValueCallback(CoerceValue) ) ); //---------------------------------------------------------------------------------------------------- privatestaticvoid OnValueChanged(DependencyObject element, DependencyPropertyChangedEventArgs args) { element.CoerceValue(ValueProperty); } //---------------------------------------------------------------------------------------------------- privatestaticobject CoerceValue(DependencyObject element, object value) { SASVoltage block = (SASVoltage)element; if (value == null) value = 0; block.SValue.Text = String.Format("{0:0.00} V",value); return value; } //---------------------------------------------------------------------------------------------------- #endregion //----------------------------------------------------------------------------------------------------
j'aimerais savoir si on peut forcer le passage dans la methode CoerceValue quand on a jamais modifié la dependency property
bon je sais j'en entend deja qui vont me dire que je pourrais bien entendu
- lancer la methode CoerceValue dans le constructeur
- pourrait formater correctement la TextBox au debut (cela pose le probleme du separateur decimal ...)
mais bon on peut etre puriste non ?![]()
Partager