2010-02-17 84 views
2

我試圖爲工具欄創建一些下拉菜單,並希望它們看起來像Word中的頁面佈局下拉菜單(如方向和大小菜單)。WPF中的帶狀控件

我試圖做到這一點使用一個ComboBox,但我無法弄清楚如何在組合框的頂部顯示的選項名稱,而不是選擇的項目。是否有可能讓ComboBox在頂部顯示任何你想要的內容?

我應該嘗試與一個ComboBox做到這一點還是有更好的方式去這件事嗎?

alt text http://www.mstipsandtricks.com/tips-and-tricks/ms-office-tips-and-tricks/ms-word/How-to-set-orientation-to-entire-document-or-part-of-document-in-MS-Word-2007/figure2.jpg

編輯:它看起來像我需要一個功能區控制。我可以從ComboBox中製作一個簡單的嗎?看起來我很接近,我只需要能夠在ComboBox中顯示一個類別而不是所選的項目。

回答

2

您可以建立這個使用組合框,如果你想,看看在ComboBox控件模板例如在:http://msdn.microsoft.com/en-us/library/ms752094.aspx

您可以在組合框中由一個切換按鈕,該網頁看到,一個彈出,一個文本框和一個內容展示器(根據組合框模式,最後兩個中只有一個是可見的)。

您可以刪除文本框,並從下拉框模板內容演示,並與你想要的任何替換它們 - 例如,一個大的圖標和選項名稱。

您也可以使用切換按鈕綁定到一個彈出來創建自己的(非組合框)下拉控制相同的技術。

+0

感謝您的想法。我不知道Popup控件。我用Button和Popup去了,效果很好。謝謝! –

4

Word使用色帶。

這裏是WPF Ribbons project。這將有辦法做你正在尋找的東西。

+0

出於安全原因,我無法下載MS控制物品是指,所以現在我將不得不嘗試用不同的方式。有任何想法嗎? –

+0

+1感謝您給我正確的術語。當你使用正確的單詞時,Googleing會容易得多。 –

0

這裏是一個如何通過編寫xaml代碼來使用功能區的示例。一旦你習慣了它,這很容易。

第一添加此引用: enter image description here

然後添加這個命名空間到XAML文件:

enter image description here

,現在使用此代碼模板一起工作:

<DockPanel> 
    <ribbon:Ribbon DockPanel.Dock="Top" Margin="0,-22,0,0"> 

     <Ribbon.ApplicationMenu> 
      <RibbonApplicationMenu SmallImageSource="Images/list.png"> 

       <RibbonApplicationMenu.AuxiliaryPaneContent> 
        <RibbonGallery ScrollViewer.VerticalScrollBarVisibility="Auto"> 
         <RibbonGalleryCategory MaxColumnCount="1"> 
          <RibbonGalleryItem x:Name="GalleryItem1" Content="C# developer" 
           MouseOverBackground="Transparent" 
           MouseOverBorderBrush="Transparent" 
           CheckedBackground="Transparent" 
           CheckedBorderBrush="Transparent" 
               /> 
          <RibbonGalleryItem> 
           <Hyperlink x:Name="hl1" Click="hl1_Click"> 
            <Run Text="http://www.bing.com"/> 
           </Hyperlink> 
          </RibbonGalleryItem> 
         </RibbonGalleryCategory> 
        </RibbonGallery> 
       </RibbonApplicationMenu.AuxiliaryPaneContent> 
       <RibbonApplicationMenuItem x:Name="menuItem1" Header="Add" ImageSource="Images/add.png"/> 
       <RibbonApplicationMenuItem x:Name="menuItem2" Header="Settings" 
              ImageSource="Images/system_preferences.png"/> 

      </RibbonApplicationMenu> 
     </Ribbon.ApplicationMenu> 
     <!--Rider--> 
     <RibbonTab x:Name="rbnTab1" Header="Tab1"> 
      <RibbonGroup x:Name="rbnGr1" Header="General"> 
       <RibbonButton x:Name="btnRibbon1" Label="Save" LargeImageSource="Images/filesave.png"/> 
       <RibbonButton x:Name="btnRibbon2" Label="Open" LargeImageSource="Images/load.png"/> 
      </RibbonGroup> 
      <RibbonGroup x:Name="rbnGr2" Header="New group"> 
       <RibbonButton x:Name="btnRibbon3" Label="Font" LargeImageSource="Images/fonts.png"/> 
       <RibbonButton x:Name="btnRibbon4" Label="Delete" LargeImageSource="Images/recycle_bin.png"/> 
      </RibbonGroup> 
     </RibbonTab> 
     <RibbonTab x:Name="rbnTab2" Header="Tab2"> 
      <RibbonGroup x:Name="rbnGr3" Header="Other Group"> 
       <RibbonButton x:Name="btnRibbon5" Label="Play" LargeImageSource="Images/play.png"/> 
       <RibbonButton x:Name="btnRibbon6" Label="List" LargeImageSource="Images/kmenuedit.png"/> 
      </RibbonGroup> 
      <RibbonGroup x:Name="rbnGr4" Header="What a group"> 
       <RibbonButton x:Name="btnRibbon7" Label="Sleep" LargeImageSource="Images/icon_sleep.png"/> 
       <RibbonButton x:Name="btnRibbon8" Label="Add" LargeImageSource="Images/add.png"/> 
      </RibbonGroup> 
     </RibbonTab> 
    </ribbon:Ribbon> 

    <Grid> 
     <Button x:Name="button" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75"/> 

    </Grid> 
</DockPanel> 

如果你想隱藏<Ribbon.ApplicationMenu>只需添加以下屬性: <Ribbon.ApplicationMenu> <RibbonApplicationMenu Visibility="Collapsed"> </RibbonApplicationMenu> </Ribbon.ApplicationMenu>