Implementing Badges in WinUI
The Syncfusion WinUI Badge control (SfBadge) displays notifications, counts, or status indicators overlaid on other UI elements. Use badges to show unread message counts, notification indicators, status changes, or any numeric/text overlay on buttons, icons, or controls.
When to Use This Skill
Use this skill when you need to:
- Display notification counts on buttons, icons, or UI elements
- Show unread message indicators in messaging or email interfaces
- Add status badges to user avatars or profile pictures
- Create notification overlays on navigation items
- Implement count indicators for shopping carts or lists
- Show warning, error, or success states with badges
- Position badges at specific locations on controls
- Customize badge appearance (colors, shapes, animations)
- Work with the
SfBadge or BadgeContainer components
Component Overview
Key Capabilities:
- Multiple shapes (Oval, Rectangle, Ellipse, Custom)
- Predefined color states (Accent, Success, Warning, Error, Information)
- Flexible positioning and alignment
- Custom content and formatting
- Animation support (Scale, Opacity)
- Works with or without
BadgeContainer
- Complete customization (colors, fonts, strokes, rotation)
Basic Usage Pattern:
<notification:BadgeContainer>
<notification:BadgeContainer.Content>
<Button Content="Inbox"/>
</notification:BadgeContainer.Content>
<notification:BadgeContainer.Badge>
<notification:SfBadge Content="10" Fill="Success"/>
</notification:BadgeContainer.Badge>
</notification:BadgeContainer>
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
When you need to:
- Install and set up the Badge component
- Create your first Badge implementation
- Add Badge to buttons or other controls
- Understand BadgeContainer usage
- Set basic badge content and properties
- Learn the component structure
Shapes and Fill Styles
📄 Read: references/shapes-and-fills.md
When you need to:
- Change badge shape (Oval, Rectangle, Ellipse)
- Use predefined fill colors (Success, Warning, Error, etc.)
- Understand badge color states
- Create custom shapes with
CustomShape property
- Choose appropriate visual styles for different badge types
Alignment and Positioning
📄 Read: references/alignment-positioning.md
When you need to:
- Align badge horizontally or vertically
- Position badge inside, outside, or centered on edges
- Place badge at custom positions (0-1 range)
- Use anchor positioning
- Adjust badge content alignment
- Control padding and spacing
- Handle auto re-positioning
Customization Options
📄 Read: references/customization.md
When you need to:
- Set custom background and foreground colors
- Create completely custom badge shapes
- Customize badge UI with ContentTemplate
- Add strokes and borders
- Change text formatting (font, size, style)
- Rotate badges
- Adjust opacity
- Control badge size
- Hide or show badges
Features and Configuration
📄 Read: references/features.md
When you need to:
- Add animations (Scale or Opacity)
- Format badge content with converters
- Use Badge without BadgeContainer
- Implement badges in ListView or data templates
- Apply advanced content formatting
- Handle dynamic badge scenarios
Quick Start
1. Install NuGet Package
Install-Package Syncfusion.Notifications.WinUI
2. Import Namespace
xmlns:notification="using:Syncfusion.UI.Xaml.Notifications"
3. Basic Badge Implementation
<notification:BadgeContainer>
<notification:BadgeContainer.Content>
<Button Content="Notifications" Width="120" Height="40"/>
</notification:BadgeContainer.Content>
<notification:BadgeContainer.Badge>
<notification:SfBadge Content="5" Fill="Error"/>
</notification:BadgeContainer.Badge>
</notification:BadgeContainer>
Common Patterns
Pattern 1: Unread Message Count
<notification:BadgeContainer>
<notification:BadgeContainer.Content>
<Button Content="Messages" FontSize="16"/>
</notification:BadgeContainer.Content>
<notification:BadgeContainer.Badge>
<notification:SfBadge Content="{x:Bind UnreadCount, Mode=OneWay}"
Fill="Error"
Shape="Ellipse"/>
</notification:BadgeContainer.Badge>
</notification:BadgeContainer>
Pattern 2: Status Indicator
<notification:BadgeContainer>
<notification:BadgeContainer.Content>
<PersonPicture Width="60" Height="60" ProfilePicture="/Assets/user.png"/>
</notification:BadgeContainer.Content>
<notification:BadgeContainer.Badge>
<notification:SfBadge Shape="None"
HorizontalPosition="0.85"
VerticalPosition="0.85">
<Ellipse Width="16" Height="16" Fill="LimeGreen"/>
</notification:SfBadge>
</notification:BadgeContainer.Badge>
</notification:BadgeContainer>
Pattern 3: Success/Warning States
<!-- Success Badge -->
<notification:SfBadge Content="Verified"
Fill="Success"
Shape="Rectangle"/>
<!-- Warning Badge -->
<notification:SfBadge Content="!"
Fill="Warning"
Shape="Ellipse"/>
<!-- Error Badge -->
<notification:SfBadge Content="Error"
Fill="Error"
Shape="Oval"/>
Pattern 4: Custom Formatted Count
// Converter to format large numbers
public class CountFormatConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (int.TryParse(value?.ToString(), out int count))
{
if (count <= 99) return count.ToString();
if (count <= 999) return "99+";
if (count < 99999) return (count / 1000).ToString("0.#") + "K";
return (count / 1000000).ToString("0.#") + "M";
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
<Page.Resources>
<local:CountFormatConverter x:Key="countFormatter"/>
</Page.Resources>
<notification:SfBadge Content="{x:Bind Count, Mode=OneWay, Converter={StaticResource countFormatter}}"
Background="Red"
Foreground="White"/>
Pattern 5: Badge in ListView
<ListView ItemsSource="{x:Bind MailItems}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:MailItem">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{x:Bind FolderName}"
VerticalAlignment="Center"/>
<notification:SfBadge Grid.Column="1"
Content="{x:Bind UnreadCount}"
Fill="Warning"
Shape="Oval"
Visibility="{x:Bind HasUnread}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Key Properties
Content and Display
- Content - Text or number to display in badge
- ContentTemplate - Custom template for badge content
- Visibility - Show or hide badge (Visible/Collapsed)
Shape and Style
- Shape - Badge shape: Oval, Rectangle, Ellipse, None, Custom
- Fill - Predefined color: Accent, Success, Warning, Error, Information, Alt, Default
- CustomShape - Geometry for custom badge shapes
- Background/Foreground - Custom colors
Positioning (with BadgeContainer)
- HorizontalAlignment - Left, Center, Right (default: Right)
- VerticalAlignment - Top, Center, Bottom (default: Top)
- HorizontalAnchor - Inside, Center, Outside (default: Center)
- VerticalAnchor - Inside, Center, Outside (default: Center)
- HorizontalPosition - 0 to 1 for custom positioning (default: 1)
- VerticalPosition - 0 to 1 for custom positioning (default: 0)
Appearance
- Width/Height - Badge dimensions (default: 40x30)
- Padding - Internal content spacing
- FontSize/FontFamily/FontStyle - Text formatting
- Stroke/StrokeThickness - Border styling
- Rotation - Rotation angle in degrees
- Opacity - Transparency (0-1)
Animation
- AnimationType - None, Scale, Opacity (animates on content change)
Common Use Cases
- Email/Messaging Apps - Unread message counts on inbox buttons
- E-commerce - Item counts in shopping cart badges
- Social Media - Notification counts on notification icons
- Status Indicators - Online/offline/away status on avatars
- Navigation Menus - New item indicators on menu items
- Dashboard Widgets - Alert counts on dashboard cards
- Forms - Error or warning indicators on form fields
- Lists - Item counts or status on list items
When to Use BadgeContainer vs Standalone
Use BadgeContainer when:
- Badge needs to overlay another control (Button, Image, Icon)
- You need automatic positioning relative to content
- You want badge to follow content when resizing
Use standalone Badge when:
- Badge is part of a layout (Grid, StackPanel)
- You're handling positioning with layout containers
- Using badges in ItemTemplates or DataTemplates
- You need manual position control
Tips and Best Practices
- Choose appropriate Fill colors - Use Success (green) for positive states, Warning (orange) for alerts, Error (red) for critical notifications
- Keep content concise - Single digit, short text, or icon works best
- Use Ellipse shape for numbers - Oval or Ellipse shapes work well for numeric counts
- Format large numbers - Display "99+" for counts over 99 to avoid badge becoming too wide
- Consider accessibility - Ensure sufficient color contrast between background and foreground
- Animate content changes - Use Scale or Opacity animation to draw attention to updates
- Hide when zero - Set Visibility to Collapsed when count is zero or null
- Test different sizes - Verify badge appearance on various control sizes
- Use consistent positioning - Keep badge position consistent across similar controls in your app
Troubleshooting Quick Reference
| Issue |
Solution |
| Badge not visible |
Check Visibility property, ensure Content is set, verify parent container size |
| Position incorrect |
Review HorizontalAnchor/VerticalAnchor values, check alignment properties |
| Content cut off |
Increase Width/Height or adjust Padding |
| Color not applying |
Background overrides Fill - use one or the other |
| Animation not working |
Animation only triggers on Content change, verify AnimationType is set |
| Badge not overlapping |
Ensure using BadgeContainer, not standalone Badge |
For detailed implementation guidance, refer to the specific documentation files listed in the Navigation Guide above.
1---2name: syncfusion-winui-badge3description: Guide implementation of the Syncfusion WinUI Badge control (SfBadge) for displaying notification badges and status indicators. Use this skill when working with badge notifications, unread count badges, BadgeContainer, or notification overlays in WinUI applications. Covers shapes, colors, positioning, alignment, animations, and customization patterns.4---56# Implementing Badges in WinUI78The Syncfusion WinUI Badge control (`SfBadge`) displays notifications, counts, or status indicators overlaid on other UI elements. Use badges to show unread message counts, notification indicators, status changes, or any numeric/text overlay on buttons, icons, or controls.910## When to Use This Skill1112Use this skill when you need to:13- Display notification counts on buttons, icons, or UI elements14- Show unread message indicators in messaging or email interfaces15- Add status badges to user avatars or profile pictures16- Create notification overlays on navigation items17- Implement count indicators for shopping carts or lists18- Show warning, error, or success states with badges19- Position badges at specific locations on controls20- Customize badge appearance (colors, shapes, animations)21- Work with the `SfBadge` or `BadgeContainer` components2223## Component Overview2425**Key Capabilities:**26- Multiple shapes (Oval, Rectangle, Ellipse, Custom)27- Predefined color states (Accent, Success, Warning, Error, Information)28- Flexible positioning and alignment29- Custom content and formatting30- Animation support (Scale, Opacity)31- Works with or without `BadgeContainer`32- Complete customization (colors, fonts, strokes, rotation)3334**Basic Usage Pattern:**35```xaml36<notification:BadgeContainer>37 <notification:BadgeContainer.Content>38 <Button Content="Inbox"/>39 </notification:BadgeContainer.Content>40 <notification:BadgeContainer.Badge>41 <notification:SfBadge Content="10" Fill="Success"/>42 </notification:BadgeContainer.Badge>43</notification:BadgeContainer>44```4546## Documentation and Navigation Guide4748### Getting Started49📄 **Read:** [references/getting-started.md](references/getting-started.md)5051When you need to:52- Install and set up the Badge component53- Create your first Badge implementation54- Add Badge to buttons or other controls55- Understand BadgeContainer usage56- Set basic badge content and properties57- Learn the component structure5859### Shapes and Fill Styles60📄 **Read:** [references/shapes-and-fills.md](references/shapes-and-fills.md)6162When you need to:63- Change badge shape (Oval, Rectangle, Ellipse)64- Use predefined fill colors (Success, Warning, Error, etc.)65- Understand badge color states66- Create custom shapes with `CustomShape` property67- Choose appropriate visual styles for different badge types6869### Alignment and Positioning70📄 **Read:** [references/alignment-positioning.md](references/alignment-positioning.md)7172When you need to:73- Align badge horizontally or vertically74- Position badge inside, outside, or centered on edges75- Place badge at custom positions (0-1 range)76- Use anchor positioning77- Adjust badge content alignment78- Control padding and spacing79- Handle auto re-positioning8081### Customization Options82📄 **Read:** [references/customization.md](references/customization.md)8384When you need to:85- Set custom background and foreground colors86- Create completely custom badge shapes87- Customize badge UI with ContentTemplate88- Add strokes and borders89- Change text formatting (font, size, style)90- Rotate badges91- Adjust opacity92- Control badge size93- Hide or show badges9495### Features and Configuration96📄 **Read:** [references/features.md](references/features.md)9798When you need to:99- Add animations (Scale or Opacity)100- Format badge content with converters101- Use Badge without BadgeContainer102- Implement badges in ListView or data templates103- Apply advanced content formatting104- Handle dynamic badge scenarios105106## Quick Start107108### 1. Install NuGet Package109110```powershell111Install-Package Syncfusion.Notifications.WinUI112```113114### 2. Import Namespace115116```xaml117xmlns:notification="using:Syncfusion.UI.Xaml.Notifications"118```119120### 3. Basic Badge Implementation121122```xaml123<notification:BadgeContainer>124 <notification:BadgeContainer.Content>125 <Button Content="Notifications" Width="120" Height="40"/>126 </notification:BadgeContainer.Content>127 <notification:BadgeContainer.Badge>128 <notification:SfBadge Content="5" Fill="Error"/>129 </notification:BadgeContainer.Badge>130</notification:BadgeContainer>131```132133## Common Patterns134135### Pattern 1: Unread Message Count136137```xaml138<notification:BadgeContainer>139 <notification:BadgeContainer.Content>140 <Button Content="Messages" FontSize="16"/>141 </notification:BadgeContainer.Content>142 <notification:BadgeContainer.Badge>143 <notification:SfBadge Content="{x:Bind UnreadCount, Mode=OneWay}"144 Fill="Error"145 Shape="Ellipse"/>146 </notification:BadgeContainer.Badge>147</notification:BadgeContainer>148```149150### Pattern 2: Status Indicator151152```xaml153<notification:BadgeContainer>154 <notification:BadgeContainer.Content>155 <PersonPicture Width="60" Height="60" ProfilePicture="/Assets/user.png"/>156 </notification:BadgeContainer.Content>157 <notification:BadgeContainer.Badge>158 <notification:SfBadge Shape="None"159 HorizontalPosition="0.85"160 VerticalPosition="0.85">161 <Ellipse Width="16" Height="16" Fill="LimeGreen"/>162 </notification:SfBadge>163 </notification:BadgeContainer.Badge>164</notification:BadgeContainer>165```166167### Pattern 3: Success/Warning States168169```xaml170<!-- Success Badge -->171<notification:SfBadge Content="Verified" 172 Fill="Success" 173 Shape="Rectangle"/>174175<!-- Warning Badge -->176<notification:SfBadge Content="!" 177 Fill="Warning" 178 Shape="Ellipse"/>179180<!-- Error Badge -->181<notification:SfBadge Content="Error" 182 Fill="Error" 183 Shape="Oval"/>184```185186### Pattern 4: Custom Formatted Count187188```csharp189// Converter to format large numbers190public class CountFormatConverter : IValueConverter191{192 public object Convert(object value, Type targetType, object parameter, string language)193 {194 if (int.TryParse(value?.ToString(), out int count))195 {196 if (count <= 99) return count.ToString();197 if (count <= 999) return "99+";198 if (count < 99999) return (count / 1000).ToString("0.#") + "K";199 return (count / 1000000).ToString("0.#") + "M";200 }201 return value;202 }203 204 public object ConvertBack(object value, Type targetType, object parameter, string language)205 {206 throw new NotImplementedException();207 }208}209```210211```xaml212<Page.Resources>213 <local:CountFormatConverter x:Key="countFormatter"/>214</Page.Resources>215216<notification:SfBadge Content="{x:Bind Count, Mode=OneWay, Converter={StaticResource countFormatter}}"217 Background="Red"218 Foreground="White"/>219```220221### Pattern 5: Badge in ListView222223```xaml224<ListView ItemsSource="{x:Bind MailItems}">225 <ListView.ItemTemplate>226 <DataTemplate x:DataType="local:MailItem">227 <Grid>228 <Grid.ColumnDefinitions>229 <ColumnDefinition Width="*"/>230 <ColumnDefinition Width="Auto"/>231 </Grid.ColumnDefinitions>232 233 <TextBlock Text="{x:Bind FolderName}" 234 VerticalAlignment="Center"/>235 236 <notification:SfBadge Grid.Column="1"237 Content="{x:Bind UnreadCount}"238 Fill="Warning"239 Shape="Oval"240 Visibility="{x:Bind HasUnread}"/>241 </Grid>242 </DataTemplate>243 </ListView.ItemTemplate>244</ListView>245```246247## Key Properties248249### Content and Display250- **Content** - Text or number to display in badge251- **ContentTemplate** - Custom template for badge content252- **Visibility** - Show or hide badge (Visible/Collapsed)253254### Shape and Style255- **Shape** - Badge shape: Oval, Rectangle, Ellipse, None, Custom256- **Fill** - Predefined color: Accent, Success, Warning, Error, Information, Alt, Default257- **CustomShape** - Geometry for custom badge shapes258- **Background/Foreground** - Custom colors259260### Positioning (with BadgeContainer)261- **HorizontalAlignment** - Left, Center, Right (default: Right)262- **VerticalAlignment** - Top, Center, Bottom (default: Top)263- **HorizontalAnchor** - Inside, Center, Outside (default: Center)264- **VerticalAnchor** - Inside, Center, Outside (default: Center)265- **HorizontalPosition** - 0 to 1 for custom positioning (default: 1)266- **VerticalPosition** - 0 to 1 for custom positioning (default: 0)267268### Appearance269- **Width/Height** - Badge dimensions (default: 40x30)270- **Padding** - Internal content spacing271- **FontSize/FontFamily/FontStyle** - Text formatting272- **Stroke/StrokeThickness** - Border styling273- **Rotation** - Rotation angle in degrees274- **Opacity** - Transparency (0-1)275276### Animation277- **AnimationType** - None, Scale, Opacity (animates on content change)278279## Common Use Cases2802811. **Email/Messaging Apps** - Unread message counts on inbox buttons2822. **E-commerce** - Item counts in shopping cart badges2833. **Social Media** - Notification counts on notification icons2844. **Status Indicators** - Online/offline/away status on avatars2855. **Navigation Menus** - New item indicators on menu items2866. **Dashboard Widgets** - Alert counts on dashboard cards2877. **Forms** - Error or warning indicators on form fields2888. **Lists** - Item counts or status on list items289290## When to Use BadgeContainer vs Standalone291292**Use BadgeContainer when:**293- Badge needs to overlay another control (Button, Image, Icon)294- You need automatic positioning relative to content295- You want badge to follow content when resizing296297**Use standalone Badge when:**298- Badge is part of a layout (Grid, StackPanel)299- You're handling positioning with layout containers300- Using badges in ItemTemplates or DataTemplates301- You need manual position control302303## Tips and Best Practices3043051. **Choose appropriate Fill colors** - Use Success (green) for positive states, Warning (orange) for alerts, Error (red) for critical notifications3062. **Keep content concise** - Single digit, short text, or icon works best3073. **Use Ellipse shape for numbers** - Oval or Ellipse shapes work well for numeric counts3084. **Format large numbers** - Display "99+" for counts over 99 to avoid badge becoming too wide3095. **Consider accessibility** - Ensure sufficient color contrast between background and foreground3106. **Animate content changes** - Use Scale or Opacity animation to draw attention to updates3117. **Hide when zero** - Set Visibility to Collapsed when count is zero or null3128. **Test different sizes** - Verify badge appearance on various control sizes3139. **Use consistent positioning** - Keep badge position consistent across similar controls in your app314315## Troubleshooting Quick Reference316317| Issue | Solution |318|-------|----------|319| Badge not visible | Check Visibility property, ensure Content is set, verify parent container size |320| Position incorrect | Review HorizontalAnchor/VerticalAnchor values, check alignment properties |321| Content cut off | Increase Width/Height or adjust Padding |322| Color not applying | Background overrides Fill - use one or the other |323| Animation not working | Animation only triggers on Content change, verify AnimationType is set |324| Badge not overlapping | Ensure using BadgeContainer, not standalone Badge |325326For detailed implementation guidance, refer to the specific documentation files listed in the Navigation Guide above.