2017-09-20 106 views
0

我正在按照示例和文档从https://developer.microsoft.com/en-us/windows/uwp-community-toolkit/controls/hamburgermenu计划与控制。我复制了页面底部的代码来尝试导航功能。而该文件提出UWP工具包汉堡菜单导航似乎不起作用

如果要启用导航从汉堡 菜单的特定页面,我们建议在 HamburgerMenu控制的XAML内容来声明一个框架。

我创建了空白页面,链接到MenuItem类,并在空白页中引入一些文本块的文本块控件。在导航上,没有任何显示。使用实时视觉树检查应用程序,显示空白页面,但文本在哪里?

enter image description here

任何人有一些建议,有什么不好?在情况下,如果你很好奇我有以下

MainPage.xaml中我的所有代码:

<Page 
    x:Class="App1.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:App1" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls" 
    mc:Ignorable="d"> 

    <Page.Resources> 
     <DataTemplate x:Key="DefaultTemplate" x:DataType="local:MenuItem"> 
      <Grid Width="240" Height="48" HorizontalAlignment="Left"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="48" /> 
        <ColumnDefinition /> 
       </Grid.ColumnDefinitions> 
       <SymbolIcon Grid.Column="0" Symbol="{x:Bind Icon, Mode=OneWay}" Foreground="White" /> 
       <TextBlock Grid.Column="1" Text="{x:Bind Name, Mode=OneWay}" FontSize="16" VerticalAlignment="Center" Foreground="White" /> 
      </Grid> 
     </DataTemplate> 
    </Page.Resources> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <controls:HamburgerMenu x:Name="hamburgerMenuControl" 
           PaneBackground="Black" 
           Foreground="White" 
           ItemTemplate="{StaticResource DefaultTemplate}" 
           ItemClick="OnMenuItemClick" 
           OptionsItemTemplate="{StaticResource DefaultTemplate}" 
           OptionsItemClick="OnMenuItemClick"> 
      <Frame x:Name="contentFrame"/> 
     </controls:HamburgerMenu> 
    </Grid> 

</Page> 

MainPage.xaml.cs中:

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 

     hamburgerMenuControl.ItemsSource = MenuItem.GetMainItems(); 
     hamburgerMenuControl.OptionsItemsSource = MenuItem.GetOptionsItems(); 
    } 

    private void OnMenuItemClick(object sender, ItemClickEventArgs e) 
    { 
     var menuItem = e.ClickedItem as MenuItem; 
     contentFrame.Navigate(menuItem.PageType); 
    } 
} 

MenuItem.cs:

class MenuItem 
{ 
    public Symbol Icon { get; set; } 

    public string Name { get; set; } 

    public Type PageType { get; set; } 

    public static List<MenuItem> GetMainItems() 
    { 
     var items = new List<MenuItem>(); 

     items.Add(new MenuItem() { Icon = Symbol.Map, Name = "Item 1", PageType = typeof(Views.BlankPage) }); 
     items.Add(new MenuItem() { Icon = Symbol.BrowsePhotos, Name = "Item 2", PageType = typeof(Views.BlankPage) }); 
     return items; 
    } 

    public static List<MenuItem> GetOptionsItems() 
    { 
     var items = new List<MenuItem>(); 
     items.Add(new MenuItem() { Icon = Symbol.Setting, Name = "Settings", PageType = typeof(Views.BlankPage) }); 
     return items; 
    } 
} 

BlankPage.xaml

<Page 
    x:Class="App1.Views.BlankPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:App1.Views" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <TextBlock FontSize="48">This is blank!</TextBlock> 
    </Grid> 
</Page> 
+1

textblock可能已经离开了可视区域..您是否尝试添加任何其他控件,或者可能更改页面网格背景颜色以查看您是否实际访问了所需的页面? – Pratyay

回答

0

BlankPage.xaml上的TextBlock从您设置为白色的HamburgerMenu中获取前景,因此自然白色背景上的白色文本不可见。尝试明确地设置TextBlock的前景,如<TextBlock FontSize="48" Foreground="Red">This is blank!</TextBlock>,您会看到它。

+0

你就在这里! – hardywang