Skip to content

Commit de852ee

Browse files
authored
NavigationView: Fix bug where items with empty MenuItemsSource would still spawn flyout (#3860)
* Update test page, fix bug * PR feedback * Switch to ItemsSourceView * Fix test failures hopefully
1 parent 15ba704 commit de852ee

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

dev/NavigationView/NavigationView.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <ItemsRepeater.common.h>
3030
#include "NavigationViewItemExpandingEventArgs.h"
3131
#include "NavigationViewItemCollapsedEventArgs.h"
32+
#include "InspectingDataSource.h"
3233

3334
// General items
3435
static constexpr auto c_togglePaneButtonName = L"TogglePaneButton"sv;
@@ -5313,7 +5314,13 @@ void NavigationView::Collapse(const winrt::NavigationViewItem& item)
53135314

53145315
bool NavigationView::DoesNavigationViewItemHaveChildren(const winrt::NavigationViewItem& nvi)
53155316
{
5316-
return nvi.MenuItems().Size() > 0 || nvi.MenuItemsSource() != nullptr || nvi.HasUnrealizedChildren();
5317+
if (nvi.MenuItemsSource()) {
5318+
if (const auto sourceView = winrt::make<InspectingDataSource>(nvi.MenuItemsSource()))
5319+
{
5320+
return sourceView.Count() > 0;
5321+
}
5322+
}
5323+
return nvi.MenuItems().Size() > 0 || nvi.HasUnrealizedChildren();
53175324
}
53185325

53195326
void NavigationView::ToggleIsExpandedNavigationViewItem(const winrt::NavigationViewItem& nvi)

dev/NavigationView/TestUI/Hierarchical/HierarchicalNavigationViewDataBinding.xaml.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,11 @@ public HierarchicalNavigationViewDataBinding()
6969
var categories8 = new ObservableCollection<Category>();
7070
categories8.Add(new Category("Menu Item 16 (Selectable)", "MI16", "Icon", categories9, true));
7171

72+
var categories10 = new ObservableCollection<Category>();
73+
7274
categories.Add(new Category("Menu Item 1", "MI1", "Icon", categories2, false));
7375
categories.Add(new Category("Menu Item 6 (Selectable)", "MI6", "Icon", categories4, true));
74-
categories.Add(new Category("Menu Item 10", "MI10", "Icon", null, true));
76+
categories.Add(new Category("Menu Item 10", "MI10", "Icon", categories10, true));
7577
categories.Add(new Category("Menu Item 11", "MI11", "Icon", categories6, false));
7678
categories.Add(new Category("Menu Item 15", "MI15", "Icon", categories8, false));
7779

0 commit comments

Comments
 (0)