Skip to content

Commit 0ac2fb1

Browse files
committed
NavigationView: Fix content clipping regression (microsoft/microsoft-ui-xaml#2717)
1 parent cbc9be8 commit 0ac2fb1

File tree

4 files changed

+53
-1
lines changed

4 files changed

+53
-1
lines changed

ModernWpf/Styles/NavigationView.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<Thickness x:Key="TopNavigationViewItemSeparatorMargin">10,0</Thickness>
4242
<Thickness x:Key="TopNavigationViewOverflowButtonMargin">0</Thickness>
4343
<Thickness x:Key="NavigationViewItemContentPresenterMargin">0,0,20,0</Thickness>
44-
<Thickness x:Key="NavigationViewCompactItemContentPresenterMargin">0,0,16,0</Thickness>
44+
<Thickness x:Key="NavigationViewCompactItemContentPresenterMargin">0,0,0,0</Thickness>
4545
<Thickness x:Key="TopNavigationViewItemContentPresenterMargin">8,0,16,0</Thickness>
4646
<Thickness x:Key="TopNavigationViewItemContentOnlyContentPresenterMargin">12,0</Thickness>
4747
<Thickness x:Key="NavigationViewItemExpandChevronMargin">-20,0,6,0</Thickness>

test/NavigationView_TestUI/Common/NavigationViewPage.xaml

+20
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@
5151
</muxcontrols:NavigationViewItem.Content>
5252
</muxcontrols:NavigationViewItem>
5353
<muxcontrols:NavigationViewItem x:Name="IntegerItem" AutomationProperties.Name="Integer" Icon="Accept"/>
54+
<muxcontrols:NavigationViewItemSeparator />
55+
<muxcontrols:NavigationViewItem x:Name="HasChildItem" AutomationProperties.Name="HasChildItem" Content="Item with child">
56+
<muxcontrols:NavigationViewItem.MenuItems>
57+
<muxcontrols:NavigationViewItem x:Name="ChildItem" AutomationProperties.Name="ChildItem" Content="Child Item Content" Icon="Document" />
58+
</muxcontrols:NavigationViewItem.MenuItems>
59+
</muxcontrols:NavigationViewItem>
5460
</muxcontrols:NavigationView.MenuItems>
5561

5662
<ScrollViewer Margin="8,0,0,0">
@@ -268,6 +274,20 @@
268274
</StackPanel>
269275
</StackPanel>
270276

277+
<StackPanel Orientation="Horizontal" Margin="0 5">
278+
<Button x:Name="BringSettingsIntoViewButton" AutomationProperties.Name="BringSettingsIntoViewButton" Click="BringSettingsIntoViewButton_Click"
279+
Content="Bring Settings into view"/>
280+
</StackPanel>
281+
282+
<StackPanel Orientation="Horizontal" Margin="0 5">
283+
<Button x:Name="GetTopLevelNavViewItemContentPresenterMarginButton" AutomationProperties.Name="GetTopLevelNavViewItemContentPresenterMarginButton"
284+
Content="GetTopLevelNavViewItemContentPresenterMargin" Margin="0,0,5,0" Click="GetTopLevelNavViewItemContentPresenterMarginButton_Click"/>
285+
<Button x:Name="GetChildNavViewItemContentPresenterMarginButton" AutomationProperties.Name="GetChildNavViewItemContentPresenterMarginButton"
286+
Content="GetChildNavViewItemContentPresenterMargin" Margin="0,0,2,0" Click="GetChildNavViewItemContentPresenterMarginButton_Click" />
287+
<TextBlock Margin="5" HorizontalAlignment="Center" VerticalAlignment="Center">NavViewItemContentPresenter.Margin:</TextBlock>
288+
<TextBlock x:Name="NavViewItemContentPresenterMarginTextBlock" AutomationProperties.Name="NavViewItemContentPresenterMarginTextBlock" VerticalAlignment="Center"/>
289+
</StackPanel>
290+
271291
<TextBlock TextWrapping="Wrap" Grid.Row="1" Margin="5">
272292
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris faucibus quam id sem porta posuere. Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi sodales suscipit justo quis consequat. Vestibulum lectus magna, mattis id eleifend sed, congue eget lectus. Nam et sem pellentesque, dignissim erat eu, tincidunt lacus. Ut porttitor tincidunt ullamcorper. Vestibulum sodales neque purus, vitae eleifend metus convallis in. Etiam non metus nec ligula pharetra molestie. Donec dignissim dapibus blandit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
273293

test/NavigationView_TestUI/Common/NavigationViewPage.xaml.cs

+24
Original file line numberDiff line numberDiff line change
@@ -729,5 +729,29 @@ private void ReadSettingsSelected_Click(object sender, RoutedEventArgs e)
729729

730730
SettingsSelectedState.Text = (settings as NavigationViewItem).IsSelected.ToString();
731731
}
732+
733+
private void GetTopLevelNavViewItemContentPresenterMarginButton_Click(object sender, RoutedEventArgs e)
734+
{
735+
if (FindVisualChildByName(HomeItem, "ContentPresenter") is ContentPresenter presenter)
736+
{
737+
NavViewItemContentPresenterMarginTextBlock.Text = presenter.Margin.ToString();
738+
}
739+
}
740+
741+
private void GetChildNavViewItemContentPresenterMarginButton_Click(object sender, RoutedEventArgs e)
742+
{
743+
if (FindVisualChildByName(ChildItem, "ContentPresenter") is ContentPresenter presenter)
744+
{
745+
NavViewItemContentPresenterMarginTextBlock.Text = presenter.Margin.ToString();
746+
}
747+
}
748+
749+
private void BringSettingsIntoViewButton_Click(object sender, RoutedEventArgs e)
750+
{
751+
if (NavView.SettingsItem is NavigationViewItem settingsItem)
752+
{
753+
settingsItem.BringIntoView();
754+
}
755+
}
732756
}
733757
}

test/NavigationView_TestUI/Regression/NavigationViewRS4Page.xaml

+8
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@
3535
PaneOpening="NavView_PaneOpening"
3636
PaneOpened="NavView_PaneOpened"
3737
BackRequested="NavView_BackRequested">
38+
<!-- Note: Adding more NavViewItems here will cause the following tests to fail on RS2 and below:
39+
- CommonTests.MenuItemKeyboardInvokeTest()
40+
- SelectionTests.MenuItemAutomationSelectionTest()
41+
42+
The reason is that on RS2, the ScollViewer handles arrow keys and thus scrolls the NavigationView pane instead of moving focus.
43+
This is not an issue with the current page setup as all NavView items fit the page without the need to scroll it. Adding more items,
44+
however, will push these items off-screen leading the ScrollViewer to scroll the pane instead of moving focus. As a result, the above
45+
mentioned tests will fail. -->
3846
<muxcontrols:NavigationView.MenuItems>
3947
<muxcontrols:NavigationViewItem x:Name="HomeItem" Content="Home" Icon="Home"/>
4048
<muxcontrols:NavigationViewItem x:Name="AppsItem" Content="Apps" Icon="Shop" />

0 commit comments

Comments
 (0)