diff --git a/doc/assets/tabbaritem-winui-material-badges.png b/doc/assets/tabbaritem-winui-material-badges.png
new file mode 100644
index 000000000..9e143b564
Binary files /dev/null and b/doc/assets/tabbaritem-winui-material-badges.png differ
diff --git a/doc/assets/tabbaritem-winui-material-largebadge.png b/doc/assets/tabbaritem-winui-material-largebadge.png
new file mode 100644
index 000000000..32f9b3f2d
Binary files /dev/null and b/doc/assets/tabbaritem-winui-material-largebadge.png differ
diff --git a/doc/assets/tabbaritem-winui-material-smallbadge.png b/doc/assets/tabbaritem-winui-material-smallbadge.png
new file mode 100644
index 000000000..fad27e854
Binary files /dev/null and b/doc/assets/tabbaritem-winui-material-smallbadge.png differ
diff --git a/doc/controls/TabBarAndTabBarItem.md b/doc/controls/TabBarAndTabBarItem.md
index c7e068dfd..586e1363d 100644
--- a/doc/controls/TabBarAndTabBarItem.md
+++ b/doc/controls/TabBarAndTabBarItem.md
@@ -37,6 +37,8 @@ Object → DependencyObject → UIElement → FrameworkElement ͛
### Properties
Property|Type|Description
-|-|-
+BadgeValue|string|Gets or sets the value to be displayed in the badge of the `TabBarItem`. If a value is set the large badge will be displayed otherwise it will be the small badge. (Currently only usable with the Material Theme Toolkit Library with the `BottomTabBarItem` style)
+BadgeVisibility|Visibility|Gets or sets the badge visibility of the `TabBarItem`. (Currently only usable with the Material Theme Toolkit Library with the `BottomTabBarItem` style)
Command|ICommand|Gets or sets the command to invoke when the `TabBarItem` is pressed.
CommandParameter|object|Gets or sets the parameter to pass to the `Command` property.
Flyout|double|Gets or sets the flyout associated with this `TabBarItem`.
@@ -278,3 +280,49 @@ xmlns:utu="using:Uno.Toolkit.UI"
![](../assets/tabbar-android-material-bottom-fab.png)
![](../assets/tabbar-android-material-bottom-fab-flyout.png)
+
+#### Badge usage for the Material `BottomTabBarItem` Style
+Icons in `TabBar` items can display badges in their upper right corners.
+
+Badges can contain dynamic information, such as the number of new messages.
+
+Currently, only the Material Theme Toolkit Library contains a `BottomTabBarItemStyle` that you can use to display a badge (which is optional).
+
+![](../assets/tabbaritem-winui-material-badges.png)
+
+##### Small Badge
+A small badge uses only shape to indicate a status change or new notification.
+
+![](../assets/tabbaritem-winui-material-smallbadge.png)
+
+```xml
+xmlns:utu="using:Uno.Toolkit.UI"
+...
+
+
+
+
+
+
+```
+
+##### Large Badge
+A large badge displays a number within a container to indicate a quantifiable status change related to a destination.
+
+![](../assets/tabbaritem-winui-material-largebadge.png)
+
+```xml
+xmlns:utu="using:Uno.Toolkit.UI"
+...
+
+
+
+
+
+
+```
\ No newline at end of file
diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Droid/Uno.Toolkit.Samples.Droid.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Droid/Uno.Toolkit.Samples.Droid.csproj
index 60c487c32..7c4bb208e 100644
--- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Droid/Uno.Toolkit.Samples.Droid.csproj
+++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Droid/Uno.Toolkit.Samples.Droid.csproj
@@ -66,10 +66,10 @@
- 2.3.0-dev.4
+ 2.3.0-dev.6
- 2.3.0-dev.4
+ 2.3.0-dev.6
diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Shared/Content/Controls/TabBarSamplePage.xaml b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Shared/Content/Controls/TabBarSamplePage.xaml
index 02c68ad3b..1c2c11308 100644
--- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Shared/Content/Controls/TabBarSamplePage.xaml
+++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Shared/Content/Controls/TabBarSamplePage.xaml
@@ -421,12 +421,22 @@
-
+
-
+
-
+
+
+
+
+
+
diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Skia.Gtk/Uno.Toolkit.Samples.Skia.Gtk.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Skia.Gtk/Uno.Toolkit.Samples.Skia.Gtk.csproj
index 3d15dfcfc..43090cd40 100644
--- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Skia.Gtk/Uno.Toolkit.Samples.Skia.Gtk.csproj
+++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Skia.Gtk/Uno.Toolkit.Samples.Skia.Gtk.csproj
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.UWP/Uno.Toolkit.Samples.UWP.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.UWP/Uno.Toolkit.Samples.UWP.csproj
index 3623693a0..48840f786 100644
--- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.UWP/Uno.Toolkit.Samples.UWP.csproj
+++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.UWP/Uno.Toolkit.Samples.UWP.csproj
@@ -12,10 +12,10 @@
- 2.3.0-dev.4
+ 2.3.0-dev.6
- 2.3.0-dev.4
+ 2.3.0-dev.6
diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Wasm/Uno.Toolkit.Samples.Wasm.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Wasm/Uno.Toolkit.Samples.Wasm.csproj
index 90847fdb6..c02ad305d 100644
--- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Wasm/Uno.Toolkit.Samples.Wasm.csproj
+++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.Wasm/Uno.Toolkit.Samples.Wasm.csproj
@@ -42,9 +42,9 @@
-
+
-
+
diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.iOS/Uno.Toolkit.Samples.iOS.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.iOS/Uno.Toolkit.Samples.iOS.csproj
index 1edec4ed4..f892b2edb 100644
--- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.iOS/Uno.Toolkit.Samples.iOS.csproj
+++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.iOS/Uno.Toolkit.Samples.iOS.csproj
@@ -191,10 +191,10 @@
all
- 2.3.0-dev.4
+ 2.3.0-dev.6
- 2.3.0-dev.4
+ 2.3.0-dev.6
diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.macOS/Uno.Toolkit.Samples.macOS.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.macOS/Uno.Toolkit.Samples.macOS.csproj
index 86ef9cc49..22d51eeab 100644
--- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.macOS/Uno.Toolkit.Samples.macOS.csproj
+++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.macOS/Uno.Toolkit.Samples.macOS.csproj
@@ -75,10 +75,10 @@
- 2.3.0-dev.4
+ 2.3.0-dev.6
- 2.3.0-dev.4
+ 2.3.0-dev.6
diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Droid/Uno.Toolkit.WinUI.Samples.Droid.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Droid/Uno.Toolkit.WinUI.Samples.Droid.csproj
index bcd5dc036..daabbdf85 100644
--- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Droid/Uno.Toolkit.WinUI.Samples.Droid.csproj
+++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Droid/Uno.Toolkit.WinUI.Samples.Droid.csproj
@@ -71,7 +71,7 @@
- 2.3.0-dev.4
+ 2.3.0-dev.6
diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Skia.Gtk/Uno.Toolkit.WinUI.Samples.Skia.Gtk.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Skia.Gtk/Uno.Toolkit.WinUI.Samples.Skia.Gtk.csproj
index cb6368859..49d55f29b 100644
--- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Skia.Gtk/Uno.Toolkit.WinUI.Samples.Skia.Gtk.csproj
+++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Skia.Gtk/Uno.Toolkit.WinUI.Samples.Skia.Gtk.csproj
@@ -34,7 +34,7 @@
-
+
diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Wasm/Uno.Toolkit.WinUI.Samples.Wasm.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Wasm/Uno.Toolkit.WinUI.Samples.Wasm.csproj
index 6c81f4e84..593f2e820 100644
--- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Wasm/Uno.Toolkit.WinUI.Samples.Wasm.csproj
+++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Wasm/Uno.Toolkit.WinUI.Samples.Wasm.csproj
@@ -42,7 +42,7 @@
-
+
diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Windows.Desktop/Uno.Toolkit.WinUI.Samples.Windows.Desktop.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Windows.Desktop/Uno.Toolkit.WinUI.Samples.Windows.Desktop.csproj
index 8f6c2e04a..ad8a3ed22 100644
--- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Windows.Desktop/Uno.Toolkit.WinUI.Samples.Windows.Desktop.csproj
+++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.Windows.Desktop/Uno.Toolkit.WinUI.Samples.Windows.Desktop.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.iOS/Uno.Toolkit.WinUI.Samples.iOS.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.iOS/Uno.Toolkit.WinUI.Samples.iOS.csproj
index c3427f77e..a5bd7e6c6 100644
--- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.iOS/Uno.Toolkit.WinUI.Samples.iOS.csproj
+++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.iOS/Uno.Toolkit.WinUI.Samples.iOS.csproj
@@ -124,7 +124,7 @@
- 2.3.0-dev.4
+ 2.3.0-dev.6
diff --git a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.macOS/Uno.Toolkit.WinUI.Samples.macOS.csproj b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.macOS/Uno.Toolkit.WinUI.Samples.macOS.csproj
index cd6de0bea..4a914d0b9 100644
--- a/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.macOS/Uno.Toolkit.WinUI.Samples.macOS.csproj
+++ b/samples/Uno.Toolkit.WinUI.Samples/Uno.Toolkit.WinUI.Samples.macOS/Uno.Toolkit.WinUI.Samples.macOS.csproj
@@ -74,7 +74,7 @@
- 2.3.0-dev.4
+ 2.3.0-dev.6
diff --git a/src/Uno.Toolkit.UI/Controls/TabBar/TabBarItem.Properties.cs b/src/Uno.Toolkit.UI/Controls/TabBar/TabBarItem.Properties.cs
index 652e4e42c..293ceeeb6 100644
--- a/src/Uno.Toolkit.UI/Controls/TabBar/TabBarItem.Properties.cs
+++ b/src/Uno.Toolkit.UI/Controls/TabBar/TabBarItem.Properties.cs
@@ -29,6 +29,28 @@ partial class TabBarItem
DependencyProperty.Register(nameof(Icon), typeof(IconElement), typeof(TabBarItem), new PropertyMetadata(null, OnPropertyChanged));
#endregion
+ #region BadgeVisibility
+ public Visibility BadgeVisibility
+ {
+ get { return (Visibility)GetValue(BadgeVisibilityProperty); }
+ set { SetValue(BadgeVisibilityProperty, value); }
+ }
+
+ public static readonly DependencyProperty BadgeVisibilityProperty =
+ DependencyProperty.Register("BadgeVisibility", typeof(Visibility), typeof(TabBarItem), new PropertyMetadata(Visibility.Collapsed, OnPropertyChanged));
+ #endregion
+
+ #region BadgeValue
+ public string? BadgeValue
+ {
+ get { return (string)GetValue(BadgeValueProperty); }
+ set { SetValue(BadgeValueProperty, value); }
+ }
+
+ public static readonly DependencyProperty BadgeValueProperty =
+ DependencyProperty.Register("BadgeValue", typeof(string), typeof(TabBarItem), new PropertyMetadata(default(string?), OnPropertyChanged));
+ #endregion
+
#region IsSelectable
public bool IsSelectable
{
diff --git a/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.UI.Cupertino.csproj b/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.UI.Cupertino.csproj
index 37735d6a3..5d0869573 100644
--- a/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.UI.Cupertino.csproj
+++ b/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.UI.Cupertino.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.WinUI.Cupertino.csproj b/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.WinUI.Cupertino.csproj
index c97b1ed79..518712874 100644
--- a/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.WinUI.Cupertino.csproj
+++ b/src/library/Uno.Toolkit.Cupertino/Uno.Toolkit.WinUI.Cupertino.csproj
@@ -17,7 +17,7 @@
-
+
diff --git a/src/library/Uno.Toolkit.Material/Generated/mergedpages.uwp.v2.xaml b/src/library/Uno.Toolkit.Material/Generated/mergedpages.uwp.v2.xaml
index 317f9a1e5..ff1564438 100644
--- a/src/library/Uno.Toolkit.Material/Generated/mergedpages.uwp.v2.xaml
+++ b/src/library/Uno.Toolkit.Material/Generated/mergedpages.uwp.v2.xaml
@@ -42,11 +42,22 @@
0,12,0,16
12,0
16
- 22,7
+ 64
+ 32
20
16
16
12
+
+
+ 6
+ 6
+ 0,4,20,0
+ 16
+ 16
+ 32,2,0,0
+ 4,0
+ 8