2012-11-10 154 views
0

我想知道如果這樣的事情可以做 -創建在C#動態菜單與WPF

我有一個菜單項稱爲「投資組合」,這兩個子的MenuItems內「加載投資組合」和「查看投資組合」 。當您單擊加載投資組合,它會提示打開一個文件,其中包含了投資組合的名字,然後我想查看投資組合中添加這些名字作爲子的MenuItems,像這樣 - >

Portfolios: 
    Load Portfolios 
     View Portfolios: 
      Portfolio1 
      Portfolio2 
      Portfolio3 

老實說,我不知道如何去解決這個問題,我還沒有遇到任何可以提供幫助的教程,所以非常感謝任何幫助! :)

回答

-1

它的簡單:

// Create MenuItem 
MenuItem mnuFile = new MenuItem(); 
mnuFile.Name = "mnuFile"; // The x:Name 
mnuFile.Header = "_File"; 

// Add to mnuMain's Items 
mnuMain.Items.Add(mnuFile); 
+0

是的,我真的想通了,事實證明我想使用ItemsSource綁定MenuItem到一個observablecollection,謝謝:)! – KingTravisG

+0

-1。在代碼中實例化或引用UI元素是一種不好的做法,這對於可伸縮性是有害的,並且會在C#代碼和應該在XAML中定義的UIElements之間生成不必要的緊耦合。 –

2

你的問題有點寬泛,所以我來總結一下,你需要做什麼:

  • 按照MVVM模式
  • 在「主「ViewModel,使ObservableCollection<Portfolio>命名爲SubMenuItems
  • 在您的視圖(XAML)中,從此開始並構建它:

    <Menu> 
        <MenuItem Header="Main Menu" ItemsSource="{Binding SubMenuItems}" /> 
    </Menu> 
    

+0

+1爲'按照MVVM模式'作爲#1項目。 –