C# UWP-防止剪裁NavigationViewItemHeader
我正在编写一个UWP应用程序,它有一个C# UWP-防止剪裁NavigationViewItemHeader,c#,uwp,clip,C#,Uwp,Clip,我正在编写一个UWP应用程序,它有一个NavigationView包含NavigationViewItemHeaders: (等等) 但是,当我折叠视图时,标题会被剪裁: 我应该怎么做才能防止这种情况发生?定义NavigationView对象的name属性x:name,以便您可以访问其IsPaneOpen属性。使用Binding属性ElementName,获取要用作绑定源的元素,该元素具有使用该属性定义的唯一标识符 名称所示的IsPaneOpen属性标识窗格是否以全宽打开,可用于切换N
NavigationView
包含NavigationViewItemHeader
s:
(等等)
但是,当我折叠视图时,标题会被剪裁:
我应该怎么做才能防止这种情况发生?定义NavigationView对象的name属性
x:name
,以便您可以访问其IsPaneOpen
属性。使用Binding属性ElementName
,获取要用作绑定源的元素,该元素具有使用该属性定义的唯一标识符
名称所示的IsPaneOpen
属性标识窗格是否以全宽打开,可用于切换NavigationViewItemHeader.Visibility
属性的可见性
<NavigationView x:Name="NavView" ... >
<NavigationViewItemHeader x:Name="ThemesHeading" Content="Themes"
Visibility="{Binding IsPaneOpen,
ElementName=NavView,
Converter={StaticResource BoolToVis}}"/>
</NavigationView>
在您的XAML页面中包括上面的名称空间
(您的名称空间将有所不同),如下所示:
xmlns:common="using:MyUWPApplication.Converter"
下面,定义转换器的资源并给它一个键,这样您就可以在绑定中引用它了
<Page.Resources>
<common:BooleanToVisibilityConverter x:Key="BoolToVis" />
</Page.Resources>
绑定定义中引用了转换器资源BoolToVis
,并且每当IsPaneOpen
属性发生更改时,将调用Convert函数将布尔值转换为可见性
结果:
解决方案1
增加项目标题的左边距:
<NavigationViewItemHeader Content="Themes" Margin="33,0,0,0"/>
...
<NavigationViewItemHeader Content="Builds" Margin="33,0,0,0"/>
解决方案3
按照AndréB的建议,将项目标题的Visibility
属性绑定到NavigationView
的IsPaneOpen
属性,只使用x:Bind
而不是Binding
,因为它不需要转换器:
<NavigationView Name="MyNavigationView">
...
<NavigationViewItemHeader Content="Themes" Visibility="{x:Bind MyNavigationView.IsPaneOpen, Mode=OneWay}"/>
...
<NavigationViewItemHeader Content="Builds" Visibility="{x:Bind MyNavigationView.IsPaneOpen, Mode=OneWay}"/>
...
</NavigationView>
...
...
...
当窗口宽度最小时,也可防止假标题显示。CompactModeThresholdWidth=“1”AlwaysShowHeader=“False”
<NavigationViewItemHeader Content="Themes" Margin="33,0,0,0"/>
...
<NavigationViewItemHeader Content="Builds" Margin="33,0,0,0"/>
<NavigationView CompactModeThresholdWidth="100000" ExpandedModeThresholdWidth="100000">
<NavigationView Name="MyNavigationView">
...
<NavigationViewItemHeader Content="Themes" Visibility="{x:Bind MyNavigationView.IsPaneOpen, Mode=OneWay}"/>
...
<NavigationViewItemHeader Content="Builds" Visibility="{x:Bind MyNavigationView.IsPaneOpen, Mode=OneWay}"/>
...
</NavigationView>