.NET UWP NavigationView.HeaderTemplate TextBlock从框架页面设置

时间:2018-07-03 12:14:42

标签: uwp

我有带片段的UWP应用,用于在框架中显示页面。主页:

    <NavigationView.HeaderTemplate>
        <DataTemplate>
            <Grid Margin="24,10,0,0">
                <TextBlock Style="{StaticResource TitleTextBlockStyle}"
                        Name="tbTitleTextBlock"
                       FontSize="28"
                       VerticalAlignment="Center"
                       Text="Welcome"/>
            </Grid>
        </DataTemplate>
    </NavigationView.HeaderTemplate>

    <Frame x:Name="ContentFrame" Margin="24">
        <Frame.ContentTransitions>
            <TransitionCollection>
                <NavigationThemeTransition/>
            </TransitionCollection>
        </Frame.ContentTransitions>
    </Frame>

如何从框架页面更改 tbTitleTextBlock 中的文本欢迎? 谢谢

1 个答案:

答案 0 :(得分:1)

  

如何在Frame页面中更改tbTitleTextBlock中的文字Welcome?谢谢

tbTitleTextBlock的DataContextNavigationView标头相同。因此,您可以使用Text="{Binding}"来获取父级DataContext的内容。并且,当您修改NavigationView标头属性时,tbTitleTextBlock将自动更改。

<NavigationView.HeaderTemplate>
    <DataTemplate>
        <Grid Margin="24,10,0,0">
            <TextBlock Style="{StaticResource TitleTextBlockStyle}"
            Name="tbTitleTextBlock"
            FontSize="28"
            VerticalAlignment="Center"
            Text="{Binding}"/>
        </Grid>
    </DataTemplate>
</NavigationView.HeaderTemplate>

用法

 private void NavigationView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
 {
     if (args.IsSettingsSelected)
     {
         contentFrame.Navigate(typeof(SampleSettingsPage));
     }
     else
     {
         var selectedItem = (NavigationViewItem)args.SelectedItem;
         string pageName = "AppUIBasics.SamplePages." + ((string) selectedItem.Tag);
         sender.Header = pageName;
         Type pageType = Type.GetType(pageName);
         contentFrame.Navigate(pageType);
     }
 }