Skip to content

Commit 422cb9e

Browse files
committed
Enable Dot Badge for NavigationViewStoreStyle #109
1 parent 7da9010 commit 422cb9e

File tree

4 files changed

+22
-25
lines changed

4 files changed

+22
-25
lines changed

dev/DevWinUI.Controls/Common/NavigationView/NavItemIconHelper.cs renamed to dev/DevWinUI.Controls/Common/NavigationView/StoreNavigationViewItemAttach.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
namespace DevWinUI;
2-
internal partial class NavItemIconHelper
2+
public partial class StoreNavigationViewItemAttach
33
{
44
public static object GetSelectedIcon(DependencyObject obj)
55
{
@@ -12,7 +12,7 @@ public static void SetSelectedIcon(DependencyObject obj, object value)
1212
}
1313

1414
public static readonly DependencyProperty SelectedIconProperty =
15-
DependencyProperty.RegisterAttached("SelectedIcon", typeof(object), typeof(NavItemIconHelper), new PropertyMetadata(null));
15+
DependencyProperty.RegisterAttached("SelectedIcon", typeof(object), typeof(StoreNavigationViewItemAttach), new PropertyMetadata(null));
1616

1717
/// <summary>
1818
/// Gets the value of <see cref="ShowNotificationDotProperty" /> for a <see cref="DependencyObject" />
@@ -35,7 +35,7 @@ public static void SetShowNotificationDot(DependencyObject obj, bool value)
3535
/// An attached property that sets whether or not a notification dot should be shown on an associated <see cref="Microsoft.UI.Xaml.Controls.NavigationViewItem" />
3636
/// </summary>
3737
public static readonly DependencyProperty ShowNotificationDotProperty =
38-
DependencyProperty.RegisterAttached("ShowNotificationDot", typeof(bool), typeof(NavItemIconHelper), new PropertyMetadata(false));
38+
DependencyProperty.RegisterAttached("ShowNotificationDot", typeof(bool), typeof(StoreNavigationViewItemAttach), new PropertyMetadata(false));
3939

4040
/// <summary>
4141
/// Gets the value of <see cref="UnselectedIconProperty"/> for a <see cref="DependencyObject"/>
@@ -58,7 +58,7 @@ public static void SetUnselectedIcon(DependencyObject obj, object value)
5858
/// An attached property that sets the unselected icon on an associated <see cref="Microsoft.UI.Xaml.Controls.NavigationViewItem" />
5959
/// </summary>
6060
public static readonly DependencyProperty UnselectedIconProperty =
61-
DependencyProperty.RegisterAttached("UnselectedIcon", typeof(object), typeof(NavItemIconHelper), new PropertyMetadata(null));
61+
DependencyProperty.RegisterAttached("UnselectedIcon", typeof(object), typeof(StoreNavigationViewItemAttach), new PropertyMetadata(null));
6262

6363
public static Visibility GetStaticIconVisibility(DependencyObject obj)
6464
{
@@ -74,5 +74,5 @@ public static void SetStaticIconVisibility(DependencyObject obj, Visibility valu
7474
/// An attached property that sets the visibility of the static icon in the associated <see cref="Microsoft.UI.Xaml.Controls.NavigationViewItem"/>.
7575
/// </summary>
7676
public static readonly DependencyProperty StaticIconVisibilityProperty =
77-
DependencyProperty.RegisterAttached("StaticIconVisibility", typeof(Visibility), typeof(NavItemIconHelper), new PropertyMetadata(Visibility.Collapsed));
77+
DependencyProperty.RegisterAttached("StaticIconVisibility", typeof(Visibility), typeof(StoreNavigationViewItemAttach), new PropertyMetadata(Visibility.Collapsed));
7878
}

dev/DevWinUI.Controls/Themes/Generic.xaml

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5646,12 +5646,11 @@ Themes\Styles\Win2D\Watermark.xaml
56465646
<!--<Border x:Name="IconColumn" Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.LatestIconColumnWidth}">-->
56475647
<ContentPresenter x:Name="Icon" Grid.Row="1" Height="20" Margin="{ThemeResource NavigationViewItemOnLeftIconBoxMargin}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" local:ImplicitOffsetAnimationHelper.EnableOffsetAnimation="True" AnimatedIcon.State="NormalOff" Content="{TemplateBinding Icon}" Foreground="{ThemeResource RailNavigationIconForegroundBrush}" />
56485648
<!--</Border>-->
5649-
<Viewbox x:Name="UnselectedIconBox" Grid.Row="1" Height="20" Margin="{ThemeResource NavigationViewItemOnLeftIconBoxMargin}" local:ImplicitOffsetAnimationHelper.EnableOffsetAnimation="True" Visibility="{TemplateBinding local:NavItemIconHelper.StaticIconVisibility}">
5650-
<ContentPresenter x:Name="UnselectedIcon" Content="{TemplateBinding local:NavItemIconHelper.UnselectedIcon}" Foreground="{ThemeResource RailNavigationIconForegroundBrush}" />
5649+
<Viewbox x:Name="UnselectedIconBox" Grid.Row="1" Height="20" Margin="{ThemeResource NavigationViewItemOnLeftIconBoxMargin}" local:ImplicitOffsetAnimationHelper.EnableOffsetAnimation="True" Visibility="{TemplateBinding local:StoreNavigationViewItemAttach.StaticIconVisibility}">
5650+
<ContentPresenter x:Name="UnselectedIcon" Content="{TemplateBinding local:StoreNavigationViewItemAttach.UnselectedIcon}" Foreground="{ThemeResource RailNavigationIconForegroundBrush}" />
56515651
</Viewbox>
5652-
<Viewbox x:Name="SelectedIconBox" Grid.Row="1" Height="20" Margin="{ThemeResource NavigationViewItemOnLeftIconBoxMargin}" local:ImplicitOffsetAnimationHelper.EnableOffsetAnimation="True" Opacity="0" Visibility="{TemplateBinding local:NavItemIconHelper.StaticIconVisibility}">
5653-
<!-- Visibility="{TemplateBinding local:NavItemIconHelper.StaticIconVisibility}" -->
5654-
<ContentPresenter x:Name="SelectedIcon" Content="{TemplateBinding local:NavItemIconHelper.SelectedIcon}" Foreground="{ThemeResource NavigationViewSelectionIndicatorForeground}" />
5652+
<Viewbox x:Name="SelectedIconBox" Grid.Row="1" Height="20" Margin="{ThemeResource NavigationViewItemOnLeftIconBoxMargin}" local:ImplicitOffsetAnimationHelper.EnableOffsetAnimation="True" Opacity="0" Visibility="{TemplateBinding local:StoreNavigationViewItemAttach.StaticIconVisibility}">
5653+
<ContentPresenter x:Name="SelectedIcon" Content="{TemplateBinding local:StoreNavigationViewItemAttach.SelectedIcon}" Foreground="{ThemeResource NavigationViewSelectionIndicatorForeground}" />
56555654
</Viewbox>
56565655
<Viewbox Grid.Row="2" Margin="{ThemeResource RailNavigationViewItemContentPresenterMargin}" StretchDirection="DownOnly">
56575656
<TextBlock x:Name="ContentPresenter" HorizontalAlignment="Center" AutomationProperties.AccessibilityView="Raw" Foreground="{ThemeResource TextFillColorSecondaryBrush}" MaxLines="2" Text="{TemplateBinding Content}" TextAlignment="Center" TextWrapping="WrapWholeWords" />
@@ -10876,9 +10875,8 @@ Themes\Styles\Win2D\Watermark.xaml
1087610875
</VisualState>
1087710876
</VisualStateGroup>
1087810877
</VisualStateManager.VisualStateGroups>
10879-
<NavigationViewItemPresenter x:Name="NavigationViewItemPresenter" Padding="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" local:NavItemIconHelper.SelectedIcon="{TemplateBinding local:NavItemIconHelper.SelectedIcon}" local:NavItemIconHelper.StaticIconVisibility="{TemplateBinding local:NavItemIconHelper.StaticIconVisibility}" local:NavItemIconHelper.UnselectedIcon="{TemplateBinding local:NavItemIconHelper.UnselectedIcon}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}" ContentTransitions="{TemplateBinding ContentTransitions}" Control.IsTemplateFocusTarget="True" CornerRadius="{TemplateBinding CornerRadius}" Foreground="{TemplateBinding Foreground}" Icon="{TemplateBinding Icon}" IsTabStop="false" UseSystemFocusVisuals="{TemplateBinding UseSystemFocusVisuals}" />
10880-
<Ellipse x:Name="NotificationDot" Height="8" MinWidth="8" Margin="12,8" HorizontalAlignment="Right" VerticalAlignment="Top" local:VisualAttach.NormalizedCenterPoint="0.5,0.5" Fill="{ThemeResource InfoBadgeBackground}" Stroke="{TemplateBinding Background}" StrokeThickness="1" Visibility="Collapsed" />
10881-
<!-- Visibility="{Binding (local:NavItemIconHelper.ShowNotificationDot), RelativeSource={RelativeSource Mode=TemplatedParent}}" -->
10878+
<NavigationViewItemPresenter x:Name="NavigationViewItemPresenter" Padding="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" local:StoreNavigationViewItemAttach.SelectedIcon="{TemplateBinding local:StoreNavigationViewItemAttach.SelectedIcon}" local:StoreNavigationViewItemAttach.StaticIconVisibility="{TemplateBinding local:StoreNavigationViewItemAttach.StaticIconVisibility}" local:StoreNavigationViewItemAttach.UnselectedIcon="{TemplateBinding local:StoreNavigationViewItemAttach.UnselectedIcon}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}" ContentTransitions="{TemplateBinding ContentTransitions}" Control.IsTemplateFocusTarget="True" CornerRadius="{TemplateBinding CornerRadius}" Foreground="{TemplateBinding Foreground}" Icon="{TemplateBinding Icon}" IsTabStop="false" UseSystemFocusVisuals="{TemplateBinding UseSystemFocusVisuals}" />
10879+
<Ellipse x:Name="NotificationDot" Height="8" MinWidth="8" Margin="12,8" HorizontalAlignment="Right" VerticalAlignment="Top" local:VisualAttach.NormalizedCenterPoint="0.5,0.5" Fill="{ThemeResource InfoBadgeBackground}" Stroke="{TemplateBinding Background}" StrokeThickness="1" Visibility="{Binding (local:StoreNavigationViewItemAttach.ShowNotificationDot), RelativeSource={RelativeSource Mode=TemplatedParent}}" />
1088210880
<ItemsRepeater x:Name="NavigationViewItemMenuItemsHost" Grid.Row="1" Visibility="Collapsed">
1088310881
<ItemsRepeater.Layout>
1088410882
<StackLayout Orientation="Vertical" />

dev/DevWinUI.Controls/Themes/Styles/CommonStyles/NavigationView.xaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -637,9 +637,9 @@
637637
VerticalAlignment="{TemplateBinding VerticalAlignment}"
638638
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
639639
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
640-
local:NavItemIconHelper.SelectedIcon="{TemplateBinding local:NavItemIconHelper.SelectedIcon}"
641-
local:NavItemIconHelper.StaticIconVisibility="{TemplateBinding local:NavItemIconHelper.StaticIconVisibility}"
642-
local:NavItemIconHelper.UnselectedIcon="{TemplateBinding local:NavItemIconHelper.UnselectedIcon}"
640+
local:StoreNavigationViewItemAttach.SelectedIcon="{TemplateBinding local:StoreNavigationViewItemAttach.SelectedIcon}"
641+
local:StoreNavigationViewItemAttach.StaticIconVisibility="{TemplateBinding local:StoreNavigationViewItemAttach.StaticIconVisibility}"
642+
local:StoreNavigationViewItemAttach.UnselectedIcon="{TemplateBinding local:StoreNavigationViewItemAttach.UnselectedIcon}"
643643
Background="{TemplateBinding Background}"
644644
BorderBrush="{TemplateBinding BorderBrush}"
645645
BorderThickness="{TemplateBinding BorderThickness}"
@@ -664,8 +664,8 @@
664664
Fill="{ThemeResource InfoBadgeBackground}"
665665
Stroke="{TemplateBinding Background}"
666666
StrokeThickness="1"
667-
Visibility="Collapsed" />
668-
<!-- Visibility="{Binding (local:NavItemIconHelper.ShowNotificationDot), RelativeSource={RelativeSource Mode=TemplatedParent}}" -->
667+
Visibility="{Binding (local:StoreNavigationViewItemAttach.ShowNotificationDot), RelativeSource={RelativeSource Mode=TemplatedParent}}" />
668+
669669
<ItemsRepeater x:Name="NavigationViewItemMenuItemsHost"
670670
Grid.Row="1"
671671
Visibility="Collapsed">
@@ -870,9 +870,9 @@
870870
Height="20"
871871
Margin="{ThemeResource NavigationViewItemOnLeftIconBoxMargin}"
872872
local:ImplicitOffsetAnimationHelper.EnableOffsetAnimation="True"
873-
Visibility="{TemplateBinding local:NavItemIconHelper.StaticIconVisibility}">
873+
Visibility="{TemplateBinding local:StoreNavigationViewItemAttach.StaticIconVisibility}">
874874
<ContentPresenter x:Name="UnselectedIcon"
875-
Content="{TemplateBinding local:NavItemIconHelper.UnselectedIcon}"
875+
Content="{TemplateBinding local:StoreNavigationViewItemAttach.UnselectedIcon}"
876876
Foreground="{ThemeResource RailNavigationIconForegroundBrush}" />
877877
</Viewbox>
878878
<Viewbox x:Name="SelectedIconBox"
@@ -881,10 +881,10 @@
881881
Margin="{ThemeResource NavigationViewItemOnLeftIconBoxMargin}"
882882
local:ImplicitOffsetAnimationHelper.EnableOffsetAnimation="True"
883883
Opacity="0"
884-
Visibility="{TemplateBinding local:NavItemIconHelper.StaticIconVisibility}">
885-
<!-- Visibility="{TemplateBinding local:NavItemIconHelper.StaticIconVisibility}" -->
884+
Visibility="{TemplateBinding local:StoreNavigationViewItemAttach.StaticIconVisibility}">
885+
886886
<ContentPresenter x:Name="SelectedIcon"
887-
Content="{TemplateBinding local:NavItemIconHelper.SelectedIcon}"
887+
Content="{TemplateBinding local:StoreNavigationViewItemAttach.SelectedIcon}"
888888
Foreground="{ThemeResource NavigationViewSelectionIndicatorForeground}" />
889889
</Viewbox>
890890
<Viewbox Grid.Row="2"

dev/DevWinUI.Gallery/Views/Pages/Features/StylesPage.xaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,7 @@
247247
<NavigationView IsSettingsVisible="True"
248248
Style="{StaticResource NavigationViewStoreStyle}">
249249
<NavigationView.MenuItems>
250-
<NavigationViewItem Content="Home" Icon="Home">
251-
</NavigationViewItem>
250+
<NavigationViewItem dev:StoreNavigationViewItemAttach.ShowNotificationDot="True" Content="Home" Icon="Home" />
252251
<NavigationViewItem Content="Calendar" Icon="Calendar" />
253252
<NavigationViewItem Content="Downloads">
254253
<NavigationViewItem.Icon>

0 commit comments

Comments
 (0)