NavigationView无法响应交互

时间:2017-11-15 10:32:23

标签: uwp uwp-xaml

当我添加自定义标题栏时,它不响应用户操作。

但删除TextBlock,没关系。

我已在app.xaml.cs OnLaunched()中添加了这些代码:

//draw into the title bar
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;

//remove the solid-colored backgrounds behind the caption controls and system back button
ApplicationViewTitleBar titleBar = ApplicationView.GetForCurrentView().TitleBar;
titleBar.ButtonBackgroundColor = Colors.Transparent;
titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
titleBar.ButtonForegroundColor = Colors.Black;

的Xaml:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <NavigationView x:Name="NavView" AlwaysShowHeader="False" SelectionChanged="NavView_SelectionChanged" DisplayModeChanged="NavView_DisplayModeChanged">

        <NavigationView.MenuItems>
            <NavigationViewItem Content="Home" Tag="home">
                <NavigationViewItem.Icon>
                    <FontIcon Glyph="&#xE10F;"/>
                </NavigationViewItem.Icon>
            </NavigationViewItem>
        </NavigationView.MenuItems>

        <NavigationView.AutoSuggestBox>
            <AutoSuggestBox x:Name="ASB" QueryIcon="Find"/>
        </NavigationView.AutoSuggestBox>

        <Frame x:Name="ContentFrame" Margin="24">
            <Frame.ContentTransitions>
                <TransitionCollection>
                    <NavigationThemeTransition/>
                </TransitionCollection>
            </Frame.ContentTransitions>
        </Frame>
    </NavigationView>
    <TextBlock x:Name="AppTitle" Style="{StaticResource CaptionTextBlockStyle}" Text="Test"/>
</Grid>

1 个答案:

答案 0 :(得分:2)

嗯,这个问题非常简单。

问题:

NavigationView出现Textblock时,您无法与Textbox进行互动的原因是因为NavigationViewclick之上。因此,当您点击应用中的任意位置时,Textblock会在NavigationView而不是Textbock上注册。

考虑到这一点,visual studio designer具有透明背景,因此您无法看到它在视觉上覆盖整个应用区域,但在Textblock中,您可以看到当您点击时Textbox选择将转到整个应用区域,而不是文本中的小部分。

解决方案:

嗯,这很简单,给你的Height WidthAlignment或某种<TextBlock x:Name="AppTitle" Style="{StaticResource CaptionTextBlockStyle}" VerticalAlignment="Top" HorizontalAlignment="Center" Text="Test"/> (水平或垂直),如下所示:

Grid.RowDefinitions
  

请注意:我强烈建议您使用Grid.ColumnDefinitions gridGrid.Row以及Grid.ColumnVerticalAlignment HorizontalAlignmentTextblock Class A{ int prop1; B b; @JsonCreator public A( @JsonProperty int prop1, @JsonProperty int prop2){ this.prop1 = prop1; this.b = new B(prop2); } } Class B(){ int prop2; @JsonCreator public B(@JsonProperty int prop2){ this.prop2 = prop2; } } {"prop1":"Hello1","prop2":"Hello2"} 调整文本框以使其更具适应性。请参阅我的回答here,以便更深入地了解如何保持自适应UI

我希望这有帮助,如果有任何疑问,请告诉我