按钮是这样生成的:
private Button[,] CreateButtons(int quantity)
{
Form.Rows = quantity;
Form.Columns = quantity;
Button[,] buttons = new Button[quantity, quantity];
for (int i = 0; i < quantity; i++)
{
for (int j = 0; j < quantity; j++)
{
buttons[i, j] = new Button();
buttons[i, j].Width = 100;
buttons[i, j].Height = 20;
buttons[i, j].Margin = new Thickness(5,80,0,0);
buttons[i, j].Click += new RoutedEventHandler(new_button_click);
}
}
return buttons;
}
他们有一个点击事件处理程序:
void new_button_click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
if (btn != null)
{
var transform = new RotateTransform(90);
transform.CenterX = 50;
transform.CenterY = 10;
btn.RenderTransform = transform;
}
}
如何实现当您单击一个按钮时,一行和一列中的所有按钮都会旋转。
你做错了。使用 MVVM。(如果你不知道它是什么,那就休息一下,看看它,你离不开它。)
启动一个提供一个按钮的虚拟机。给它添加一个属性
RotationAngle。启动另一个将为所有按钮 VM 提供服务并包含它们的 VM(我们称之为BoardVM)。激活按钮后,向其 VM 发送命令。让这个 VM 在此时调用方法来BoardVM通知点击,然后在同一列和行中的每个 VM 上依次调用该方法,并让这个方法递增RotationAngle。现在查看。
ItemsSource通过一些'a.bind'将按钮列表绑定到 VM 列表ItemsControl。将每个按钮绑定Command到来自其 VM 的命令。将旋转角度绑定到RotationAngle. 一切。并且不要像在 WinForms 中那样尝试在 WPF 中编程。相信我,这将非常不方便且效率低下。
除了@VladD的评论,我建议你早晚听听,其实轮换可以这样做:
行或列的位置
ColumnNumber和RowNumber对应的值。