C# UWP-防止剪裁NavigationViewItemHeader

C# UWP-防止剪裁NavigationViewItemHeader,c#,uwp,clip,C#,Uwp,Clip,我正在编写一个UWP应用程序,它有一个NavigationView包含NavigationViewItemHeaders: (等等) 但是,当我折叠视图时,标题会被剪裁: 我应该怎么做才能防止这种情况发生?定义NavigationView对象的name属性x:name,以便您可以访问其IsPaneOpen属性。使用Binding属性ElementName,获取要用作绑定源的元素,该元素具有使用该属性定义的唯一标识符 名称所示的IsPaneOpen属性标识窗格是否以全宽打开,可用于切换N

我正在编写一个UWP应用程序,它有一个
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>