initialisation des dependency property
voila j'ai une dependency property
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 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 ?:D