【发布时间】:2021-08-14 08:26:03
【问题描述】:
我有问题。我要为大学做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,0" VerticalAlignment="Top" Width="22" Height="4" Click="Strip1_Click" BorderBrush="Black"/>
<Button x:Name="strip1_2" Content="" HorizontalAlignment="Left" Margin="37,1,0,0" VerticalAlignment="Top" Width="22" Height="4" Click="Strip1_Click" BorderBrush="Black"/>
【问题讨论】:
-
你熟悉
Button的Command属性和ICommand接口吗? -
您能否也提及您如何使用
<Button/>对象的XAML 部分? -
实际上从未听说过...
-
@Maaz 哦...网格中的所有 20 个按钮都与一个功能相关联,该功能写在问题中,因此它们之间几乎没有区别。
<Button x:Name="strip1_1" Content="" HorizontalAlignment="Left" Margin="2,1,0,0" VerticalAlignment="Top" Width="22" Height="4" Click="Strip1_Click" BorderBrush="Black"/> <Button x:Name="strip1_2" Content="" HorizontalAlignment="Left" Margin="37,1,0,0" VerticalAlignment="Top" Width="22" Height="4" Click="Strip1_Click" BorderBrush="Black"/> -
我建议,作为一项长期学习功能,阅读有关 MVVM 编程模式的信息。从这里开始:MVVM Pattern for Xamarin!
标签: c# wpf button datacontext sender