voila j'ai une dependency property

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
//----------------------------------------------------------------------------------------------------
et vous pourrez constater que quand on change la valeur celle ci se formate vers un TextBox (nommé block)

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 ?