@@ -1091,5 +1091,113 @@ public void VerifyHierarchicalNavigationTopModeMenuItemsSourceDoesNotCrash()
10911091 Content . UpdateLayout ( ) ;
10921092 } ) ;
10931093 }
1094+
1095+ [ TestMethod ]
1096+ public void VerifyNavigationViewItemToolTipCreation ( )
1097+ {
1098+ if ( ! PlatformConfiguration . IsOsVersionGreaterThanOrEqual ( OSVersion . Redstone5 ) )
1099+ {
1100+ Log . Warning ( "On RS4 and earlier the test needs to be modified slightly." ) ;
1101+ return ;
1102+ }
1103+
1104+ RunOnUIThread . Execute ( ( ) =>
1105+ {
1106+ var navView = new NavigationView ( ) ;
1107+
1108+ // Item with null content
1109+ var menuItem1 = new NavigationViewItem ( ) ;
1110+
1111+ // Item with empty string as content
1112+ var menuItem2 = new NavigationViewItem ( ) ;
1113+ menuItem2 . Content = "" ;
1114+
1115+ // Item with null content and custom tooltip
1116+ var menuItem3 = new NavigationViewItem ( ) ;
1117+ ToolTipService . SetToolTip ( menuItem3 , "Custom tooltip" ) ;
1118+
1119+ // Item with non-empty string content
1120+ var menuItem4 = new NavigationViewItem ( ) ;
1121+ menuItem4 . Content = "Item 4" ;
1122+
1123+ navView . MenuItems . Add ( menuItem1 ) ;
1124+ navView . MenuItems . Add ( menuItem2 ) ;
1125+ navView . MenuItems . Add ( menuItem3 ) ;
1126+ navView . MenuItems . Add ( menuItem4 ) ;
1127+
1128+ // Use a pane configuration where tooltips are shown.
1129+ navView . PaneDisplayMode = NavigationViewPaneDisplayMode . Left ;
1130+ navView . IsPaneOpen = false ;
1131+
1132+ Content = navView ;
1133+ navView . UpdateLayout ( ) ;
1134+
1135+ Verify . AreEqual ( null , ToolTipService . GetToolTip ( menuItem1 ) , "Item 1's tooltip should have been [null]." ) ;
1136+ Verify . AreEqual ( null , ToolTipService . GetToolTip ( menuItem2 ) , "Item 2's tooltip should have been [null]." ) ;
1137+ Verify . AreEqual ( "Custom tooltip" , ToolTipService . GetToolTip ( menuItem3 ) , "Item 3's tooltip should have been \" Custom tooltip\" ." ) ;
1138+ Verify . AreEqual ( "Item 4" , ToolTipService . GetToolTip ( menuItem4 ) , "Item 4's tooltip should have been \" Item 4\" ." ) ;
1139+ } ) ;
1140+ }
1141+
1142+ [ TestMethod ]
1143+ public void VerifyNavigationViewItemToolTipPaneDisplayMode ( )
1144+ {
1145+ if ( ! PlatformConfiguration . IsOsVersionGreaterThanOrEqual ( OSVersion . Redstone5 ) )
1146+ {
1147+ Log . Warning ( "On RS4 and earlier the test needs to be modified slightly." ) ;
1148+ return ;
1149+ }
1150+
1151+ RunOnUIThread . Execute ( ( ) =>
1152+ {
1153+ var navView = new NavigationView ( ) ;
1154+
1155+ // Item with non-empty string content using in-built tooltip
1156+ var menuItem1 = new NavigationViewItem ( ) ;
1157+ menuItem1 . Content = "Item 1" ;
1158+
1159+ // Item with custom tooltip
1160+ var menuItem2 = new NavigationViewItem ( ) ;
1161+ menuItem2 . Content = "Item 2" ;
1162+ ToolTipService . SetToolTip ( menuItem2 , "Custom tooltip" ) ;
1163+
1164+ navView . MenuItems . Add ( menuItem1 ) ;
1165+ navView . MenuItems . Add ( menuItem2 ) ;
1166+
1167+ Content = navView ;
1168+
1169+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . Left , false , "Item 1" , "Custom tooltip" ) ;
1170+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . Left , true , null , "Custom tooltip" ) ;
1171+
1172+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . LeftCompact , false , "Item 1" , "Custom tooltip" ) ;
1173+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . LeftCompact , true , null , "Custom tooltip" ) ;
1174+
1175+ // Show tooltips again
1176+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . Left , false , "Item 1" , "Custom tooltip" ) ;
1177+
1178+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . LeftMinimal , true , null , "Custom tooltip" ) ;
1179+
1180+ // Show tooltips again
1181+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . Left , false , "Item 1" , "Custom tooltip" ) ;
1182+
1183+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . Top , false , null , "Custom tooltip" ) ;
1184+
1185+ // Show tooltips again
1186+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . Left , false , "Item 1" , "Custom tooltip" ) ;
1187+
1188+ SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode . Top , true , null , "Custom tooltip" ) ;
1189+
1190+ void SetPaneConfigAndVerifyToolTips ( NavigationViewPaneDisplayMode paneDisplayMode , bool isPaneOpen , string expectedDefaultToolTip , string expectedCustomToolTip )
1191+ {
1192+ Log . Comment ( $ "Verifying tooltips with PaneDisplayMode=[{ paneDisplayMode } ] and IsPaneOpen=[{ isPaneOpen } ]") ;
1193+ navView . PaneDisplayMode = paneDisplayMode ;
1194+ navView . IsPaneOpen = isPaneOpen ;
1195+ Content . UpdateLayout ( ) ;
1196+
1197+ Verify . AreEqual ( expectedDefaultToolTip , ToolTipService . GetToolTip ( menuItem1 ) , $ "Item 1's tooltip should have been \" { expectedDefaultToolTip ?? "null" } \" .") ;
1198+ Verify . AreEqual ( expectedCustomToolTip , ToolTipService . GetToolTip ( menuItem2 ) , $ "Item 2's tooltip should have been { expectedCustomToolTip } .") ;
1199+ }
1200+ } ) ;
1201+ }
10941202 }
10951203}
0 commit comments