问题描述
我有问题。我要做大学app,吉他模拟器,我的想法是把每个品格作为一个按钮,并实现变色功能来了解哪个品格(按钮)被夹住(按下)
var button = (Button)sender;
_buttonLastpressed = button;
var parent = (Grid)button.Parent;
var index = parent.Children.IndexOf(strip1_1);
var str = Math.Floor((decimal)(index + 1) / 20);
for (int i = 0; i < 20; i++)
{
var element = (Button)parent.Children[i + Convert.ToInt32(str) * 20];
element.Background = Brushes.White;
}
button.Background = Brushes.Blue;
这个选项效果很好,但是出现了问题,我不知道如何从按钮中获取一些信息,以便在播放什么声音时使用它(以便程序了解按下了哪个按钮)。我相信可以以某种方式使用 DataContext,但我无法想象如何更胜任地使用它
提示,有六个字符串,我决定将每个字符串声明为网格,每个网格中有 20 个品(按钮),您只能按住所有 20 个中的一个
XAML:
<Button x:Name="strip1_1" Content="" HorizontalAlignment="Left" Margin="2,1,0" VerticalAlignment="Top" Width="22" Height="4" Click="Strip1_Click" BorderBrush="Black"/>
<Button x:Name="strip1_2" Content="" HorizontalAlignment="Left" Margin="37,0" VerticalAlignment="Top" Width="22" Height="4" Click="Strip1_Click" BorderBrush="Black"/>
解决方法
一种可能的解决方案是使用每个按钮的 Click
属性来引用不同的方法。
<Button Click="DoSomething_OnClick"/>
并在代码隐藏中:
private void DoSomething_OnClick(object sender,RoutedEventArgs e)
{
// Your code here
}
您可以使用它来获得 20 种不同的方法。这样,您就可以确切地知道哪个按钮调用了哪个方法。