2011-10-28 14 views
9

में एक ऊर्ध्वाधर मेनू बनाएँ कैसे http://www.wpftutorial.net/ में से एक की तरह XAML के साथ (एक WPF में) दृश्य स्टूडियो में विंडो के बाईं ओर पर एक ऊर्ध्वाधर मेनू बनाने के लिए यह संभव है? मैं कोड का प्रयास करता हूं:एक WPF

<Menu DockPanel.Dock="Left" VerticalAlignment="Top" Background="Gray" BorderBrush="Black"> 

लेकिन यह कार्य नहीं करता है, क्योंकि यह शीर्ष पर एक क्षैतिज मेनू प्रस्तुत करता है।

यह नियंत्रण मेनू से निश्चित रूप से किया जाना आवश्यक नहीं है। यदि समान उपस्थिति वाला कोई अन्य नियंत्रण उपयुक्त है, तो यह स्वीकार्य है।

+0

आप के आसपास 'Menu' एक' DockPanel' है है? – Jon

+0

हाँ, मैं करता हूं, यह अन्यथा काम नहीं कर सकता है। – arjacsoh

+0

आप तब तक स्वीकार किए जाते हैं जवाब का उपयोग कर सकते हैं, और अपने खुद के बनाने या https://github.com/beto-rodriguez/MaterialMenu कि –

उत्तर

42

ज़रूर, बस डिफ़ॉल्ट क्षैतिज एक

<Menu> 
    <Menu.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel Orientation="Vertical"/> 
     </ItemsPanelTemplate> 
    </Menu.ItemsPanel> 

</Menu> 
+1

@arjacsoh उपयोग करने के लिए तैयार है मेनू अंतिम आइटम DockPanel में जुड़ जाता है कि है डिफ़ॉल्ट यह सभी शेष जगह भरने के लिए खिंचाव होगा। या तो अपने DockPanel पर 'LastChildFill = "गलत" सेट करें, या मेनू के बाद कोई अन्य तत्व जोड़ें। निम्नलिखित विभिन्न WPF लेआउट की एक विचार प्राप्त करने के लिए एक अच्छा लिंक है: http://www.codeproject.com/KB/WPF/WPFLayoutQS.aspx – Rachel

1

स्वीकृत anwer अच्छा है के बजाय एक कार्यक्षेत्र StackPanel उपयोग करने के लिए MenuItem.ItemsPanel बदल जाते हैं। लेकिन यह एक अच्छा साइड बार काम करने के लिए एक लंबा रास्ता है। यदि आप की आवश्यकता है तो आप इस नियंत्रण का उपयोग कर सकते हैं अब एक वर्किंग मेनू है।

https://github.com/beto-rodriguez/MaterialMenu

आप भी nuget से स्थापित कर सकते हैं।

यहाँ

एक उदाहरण

<materialMenu:SideMenu HorizontalAlignment="Left" x:Name="Menu" 
          MenuWidth="300" 
          Theme="Default" 
          State="Hidden"> 
     <materialMenu:SideMenu.Menu> 
      <ScrollViewer VerticalScrollBarVisibility="Hidden"> 
       <StackPanel Orientation="Vertical"> 
        <Border Background="#337AB5"> 
         <Grid Margin="10"> 
          <TextBox Height="150" BorderThickness="0" Background="Transparent" 
           VerticalContentAlignment="Bottom" FontFamily="Calibri" FontSize="18" 
           Foreground="WhiteSmoke" FontWeight="Bold">Welcome</TextBox> 
         </Grid> 
        </Border> 
        <materialMenu:MenuButton Text="Administration"></materialMenu:MenuButton> 
        <materialMenu:MenuButton Text="Packing"></materialMenu:MenuButton> 
        <materialMenu:MenuButton Text="Logistics"></materialMenu:MenuButton> 
       </StackPanel> 
      </ScrollViewer> 
     </materialMenu:SideMenu.Menu> 
    </materialMenu:SideMenu> 

enter image description here

+2

हालांकि यह एक अच्छा परियोजना, "अब काम कर रहा है" एक का एक सा है खिंचाव (मैंने कोशिश की) और यह ओपी से क्या नहीं करता है, जो स्वीकार किया गया जवाब करता है। ओपी ने एक साइडबार नहीं, एक मेनू के लिए पूछा। –