Вот, странное поведение меню при использовании одного и того-же массива пунктов меню...
1 using System;
2 using System.Windows;
3 using System.Windows.Controls;
4
5 public class Demo
6 { 7 private static MenuItem setHeader(MenuItem i, object h)
8 { 9 i.Header = h;
10 return i;
11 }
12
13 [STAThread]
14 public static void Main()
15 { 16 object[] list = new object[21];
17 for(int i=0;i<list.Length;++i)
18 list[i] = i%2==0?(object)setHeader(new MenuItem(), "Item №" + (i/2 +1)):(new Separator());
19
20 Window w = new Window();
21 w.Title = "WPF fan";
22 w.SizeToContent = SizeToContent.WidthAndHeight;
23 StackPanel sp = new StackPanel();
24 Menu m = new Menu();
25 sp.Children.Add(m);
26 TextBlock tb = new TextBlock();
27 tb.Padding = new Thickness(10);
28 tb.Text = "Click on MainMenu1 then on MainMenu2 than on MainMenu1 again." +
29 " Where are items from MainMenu1?";
30 sp.Children.Add(tb);
31 tb = new TextBlock();
32 tb.Padding = new Thickness(10);
33 tb.Text = "Or click on MainMenu2 then on MainMenu1 than on MainMenu2 again." +
34 " Where are items from MainMenu2?";
35 sp.Children.Add(tb);
36 w.Content = sp;
37 MenuItem mi = setHeader(new MenuItem(),"MainMenu1");
38 mi.ItemsSource = list;
39 m.Items.Add(mi);
40 mi = setHeader(new MenuItem(), "MainMenu2");
41 mi.ItemsSource = list;
42 m.Items.Add(mi);
43 (new Application()).Run(w);
44 }
45 }