private static void OnItemHeightOrWidthPropertyChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
WrapPanel source = ( WrapPanel ) d;
double value = ( double ) e.NewValue;
// Ignore the change if requested
if ( source._ignorePropertyChange )
{
source._ignorePropertyChange = false;
return;
}
// Validate the length (which must either be NaN or a positive,
// finite number)
if ( !double.IsNaN( value ) && ( ( value <= 0.0 ) || double.IsPositiveInfinity( value ) ) )
{
// Reset the property to its original state before throwing
source._ignorePropertyChange = true;
source.SetValue( e.Property, ( double ) e.OldValue );
string message = string.Format(
CultureInfo.InvariantCulture,
"Properties.Resources.WrapPanel_OnItemHeightOrWidthPropertyChanged_InvalidValue",
value );
throw new ArgumentException( message, "value" );
}
// The length properties affect measuring.
source.InvalidateMeasure();
}