我是WPF的新手,我正在努力追随这件事:
我正在创建动态按钮并将它们添加到网格中,然后我想给它们我正在做的上下文菜单,但是这里的事情contextmenu由整数组成,现在当我从contextmenu单击整数时,我想更新按钮从这个上下文中选择的数字内容如何实现它?
非常感谢帮助和解释。
这是我的代码:
List<int> a = new List<int>();
for (int i = 0; i < boardSize; i++)
a.Add(i + 1);
ContextMenu menu = new ContextMenu();
menu.ItemsSource = a;
for (int i = 0; i < boardSize; i++)
{
for (int j = 0; j < boardSize; j++)
{
btn = new Button() {ContextMenu=menu };
btn.Width = 25;
btn.Height = 25;
btn.VerticalAlignment = VerticalAlignment.Center;
btn.SetValue(Grid.ColumnProperty, j);
btn.SetValue(Grid.RowProperty, i);
btn.HorizontalAlignment = HorizontalAlignment.Stretch;
btn.Background = new SolidColorBrush(Colors.Blue);
MyGrid.Children.Add(btn);
}
}
答案 0 :(得分:0)
你需要做4个步骤来实现它:
添加成员变量以记录右键单击要显示的按钮 文本菜单:
private Button currentBtn;
添加事件以记录当前的右键单击按钮:
btn.MouseRightButtonUp += (cbtn, e2) => { currentBtn = cbtn as Button; };
定义menuitem:
List<MenuItem> a = new List<MenuItem>();
for (int i = 0; i < boardSize; i++)
{
var item = new MenuItem();
item.Header = (i + 1).ToString();
item.Click += item_Click;
a.Add(item);
}
将click事件添加到menuitem:
void item_Click(object sender, RoutedEventArgs e)
{
if (currentBtn != null)
{
var i = sender as MenuItem;
Dispatcher.Invoke(() => { currentBtn.Content = i.Header; });
}
}