2017-12-12 111 views
0

Mahappsが提供するハンバーガーメニューにメニュー項目を追加しようとしています。ハンバーガーメニューは、ImageItems、IconItems、GlyphItemsをサポートしています。使用したいアイテムのタイプはIconItemsです。私はこれを参考にして(How to use icon in mahapps hamburger menu XAML)投稿しましたが、問題は解決しません。 私はこのブログの投稿(http://jkarger.de/2017/02/06/mahapps-hamburgermenu/)にも従っています。ここで メニュー項目がMahapps.Metroに表示されないハンバーガーメニュー

は私のコードは次のとおりです。

<controls:HamburgerMenu ItemTemplate="{StaticResource MenuItemTemplate}" 
          OptionsItemTemplate="{StaticResource MenuItemTemplate}" 
          Foreground="White" DisplayMode="CompactInline" 
          ContentTemplate="{StaticResource HamburgerMenuContentTemplate}"> 
     <controls:HamburgerMenuItemCollection> 

      <controls:HamburgerMenuIconItem Icon="{iconPacks:PackIconFontAwesome Kind=AddressBook}" Label="Address" x:Name="Item1" > 
       <controls:HamburgerMenuIconItem.Tag> 
        <patient:PatientView/> 
       </controls:HamburgerMenuIconItem.Tag> 
      </controls:HamburgerMenuIconItem> 


     </controls:HamburgerMenuItemCollection> 
    </controls:HamburgerMenu> 

データテンプレート:

<DataTemplate DataType="{x:Type controls:HamburgerMenuIconItem}" x:Key="MenuItemTemplate" > 
     <Grid Height="64"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="64" /> 
       <ColumnDefinition /> 
      </Grid.ColumnDefinitions> 

      <Grid Grid.Column="0"> 
       <Viewbox ToolTip="{Binding Label}" Width="32" Height="32" > 
        <Viewbox.Child> 
         <ContentControl Content="{Binding Icon}"/> 
        </Viewbox.Child> 
       </Viewbox> 
      </Grid> 

      <TextBlock Grid.Column="1" 
         VerticalAlignment="Center" 
         FontSize="16" 
         Foreground="White" 
         Text="{Binding Label}" /> 
     </Grid> 
    </DataTemplate> 



    <DataTemplate DataType="{x:Type controls:HamburgerMenuItem}" x:Key="HamburgerMenuContentTemplate"> 
     <Grid x:Name="TheContentGrid"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="48" /> 
       <RowDefinition /> 
      </Grid.RowDefinitions> 

      <Border Grid.Row="0" 
        Background="#FF444444"> 
       <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 
        <Image Source="../Resources/Module.ico" Width="25" Height="25" Margin="10,0"/> 
        <TextBlock x:Name="Header" 
           HorizontalAlignment="Center" 
           VerticalAlignment="Center" 
           FontSize="24" 
           Foreground="White" 
           Text="e-Requesting" /> 
       </StackPanel> 
      </Border> 

      <ContentControl x:Name="TheContent" 
          Grid.Row="1" 
          Focusable="False" 
          Foreground="{DynamicResource BlackBrush}" 
          Content="{Binding Tag}" /> 
     </Grid> 
    </DataTemplate> 

私は左側のハンバーガーメニューを見ることができます私のアプリを実行すると、それが開閉します私がハンバーガーの項目を押すと、メニューに項目が表示されません。私はアイコンや画像のない標準的なメニュー項目を追加しようとしましたが、メニュー項目のラベルが一目でわかるかどうかはわかりませんが、何も表示されません。

どのような提案も素晴らしいでしょう。

+1

私は間違っているかもしれませんが(ハンバーガーそのものに慣れていないかもしれませんが)、あなたはHamburgerMenuItem'sをコンテンツとして、あるいはItemsSource'をどこにでも設定しているとは見えないので、ちょうどテンプレートを定義しています – NSGaga

+0

@NSGagaここに定義されています:(コードの最初のブロックを参照) – rejy11

+0

@NSGagaあなたが正しいです!私はItemCollectionを入れ子にしてItemsSourceタグを定義する必要がありました – rejy11

答えて

1

(コメントに基づいて、これは明らかに問題を解決しました)
「HamburgerMenuItem」をコンテンツとして設定したり、「ItemsSource」をどこに設定しても、テンプレートを定義するだけです。

関連する問題