Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

Badge.ContentFormatProvider Property

Gets or sets the format provider to format the BadgeControl‘s content. This is a dependency property.

Namespace: DevExpress.Xpf.Core

Assembly: DevExpress.Xpf.Core.v24.2.dll

NuGet Package: DevExpress.Wpf.Core

#Declaration

public IFormatProvider ContentFormatProvider { get; set; }

#Property Value

Type Description
IFormatProvider

An object of a class that implements a IFormatProvider. IFormatProvider provides a mechanism for retrieving an object to control the Badge‘s content formatting.

#Remarks

The following code sample specifies the Badge.ContentStringFormat and uses the ContentFormatProvider property to specify the Badge‘s content format:

WPF Badges - ContentStringFormat Property

<dx:SimpleButton
   HorizontalAlignment="Center"
   VerticalAlignment="Center"
   Glyph="{dx:SvgImageSource Uri=Glyph_Message.svg}">
   <dx:Badge.Badge>
       <dx:Badge Content="150" BadgeKind="Error"
                 ContentStringFormat="{}{0:length2}"
                 ContentFormatProvider="{local:BadgeFormatProvider}"/>
   </dx:Badge.Badge>
</dx:SimpleButton>
public class BadgeFormatProvider : MarkupExtension, IFormatProvider, ICustomFormatter {
   static readonly Regex formatExpression = new Regex(@"length(\d+)", RegexOptions.Compiled);

   public object GetFormat(Type formatType) { return this; }
   public override object ProvideValue(IServiceProvider serviceProvider) { return this; }
   public string Format(string format, object arg, IFormatProvider formatProvider) {
       if(arg==null)
           return String.Empty;

       var match = formatExpression.Match(format);
       if(!match.Success)
           return String.Format(CultureInfo.CurrentCulture, format ?? "{0}", arg);

       var length = int.Parse(match.Groups[1].Value);
       var inputString = Convert.ToString(arg);
       if (inputString.Length <= length)
           return inputString;

       if (decimal.TryParse(inputString, out _))
           return (Math.Pow(10, length) - 1) + "+";

       return inputString.Substring(0, length) + "...";
   }
}
See Also