2014-01-27 33 views
1

我在运行时向我的按钮添加ContextMenu时遇到问题。 我明白,这是它通过XAML添加到现有按钮的方式:如何在运行时向按钮添加ContextMenu

<Button.ContextMenu> 
    <ContextMenu> 
     <MenuItem Header="Delete"/> 
    </ContextMenu> 
</Button.ContextMenu> 

但它应该有可能将其添加到不存在的按钮,对不对?我基于在文件中的数据添加我的按钮:

for (int a = 0; a < File.ReadAllLines(@"bookmarks.txt").Count(); a++) //add already existing bookmarks 
{ 
    index = Array.FindIndex(bookmarks, i => i == null || i.Length == 0); //find closest empty spot in array 
    bookmarks[index] = getbook[a]; 
    book[index] = new Button(); 
    book[index].Height = 31; 
    book[index].Content = bookmarks[index]; 
    book[index].Click += Button_Click; 
    Bookbar.Items.Add(book[index]); 

} 

我正在寻找一个处理程序,但我似乎无法找到它。那么,如何以编程方式向按钮添加右键单击菜单?

回答

2

如果您使用WPF那是做到这一点的方式:

private void InitializeItems() 
     { 
      for (int a = 0; a < File.ReadAllLines(@"bookmarks.txt").Count(); a++) //add already existing bookmarks 
      { 
       index = Array.FindIndex(bookmarks, i => i == null || i.Length == 0); //find closest empty spot in array 
       bookmarks[index] = getbook[a]; 
       Button button = new Button(); 
       book[index] = button; 
       book[index].Height = 31; 
       book[index].Content = bookmarks[index]; 
       book[index].Click += Button_Click; 
       Bookbar.Items.Add(book[index]); 

       button.MouseRightButtonDown += button_MouseRightButtonDown; 

      } 

     } 

     void button_MouseRightButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      Button button = sender as Button; 
      ContextMenu menu = new ContextMenu(); 
      menu.Items.Add(new MenuItem() { Header = "Delete" }); 

      button.ContextMenu = menu; 

     } 

希望这有助于

+0

谢谢,就像一个魅力! – proah

+0

不用担心,很高兴我可以帮助:) –

相关问题