我有一个简单的问题,但是因为这是我第一次使用C#/ XAML,所以我去了。
XAML文件包含一个StackPanel,我想在运行时添加可点击的图像。
<StackPanel x:Name="grid_" Orientation="Horizontal" Margin="10 0 10 0" VerticalAlignment="Center">
</StackPanel>
我没有成功地在这些图片上创建点击事件,而且我已经阅读过我可以尝试按钮,更改背景。这是我的代码:
for (int i = 0; i < 20; i++)
{
Button j = new Button();
//Image j = new Image();
//j.Source = new BitmapImage(new Uri("Images/my_thumb.png", UriKind.Relative));
var brush = new ImageBrush();
j.BackgroundImage = brush;
//j.MouseDown += new RoutedEventHandler(this.changeImage);
grid_.Children.Add(j);
Grid.SetRow(j, i);
}
现在,如何更改按钮图像,并添加处理程序以检索单击了哪个按钮?我得到的错误是
Error 3 'System.Windows.Controls.Button' does not contain a definition for 'BackgroundImage' and no extension method 'BackgroundImage' accepting a first argument of type 'System.Windows.Controls.Button' could be found (are you missing a using directive or an assembly reference?)
您可以从我在代码中的评论中看到我仍然保留了普通图像方法,只是为了确保:如果您知道如何使我的图像可以点击,请告诉我:)
我可以找到一个事件处理程序,它可以只检索按钮图像源文件名,以防万一。
你能指出我正确的方向吗?记住我是一个完整的新手! :)谢谢!
答案 0 :(得分:1)
您可以使用Click
事件
j.Click += new EventHandler(onButtonClick);
然后在事件处理程序
中void onButtonClick(Object sender, EventArgs e)
{
var clickedButton = sender as Button;
// do your stuff..
}
答案 1 :(得分:0)
XAML
<Button x:Name="button" Content="Button1" HorizontalAlignment="Left" Margin="400,20,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1.258,-5" Click="Button_Click" Height="80" Width="80"/>
C#
private void Button1_Click(object sender, RoutedEventArgs e)
{
button1.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri("ms-appx:/Images/timerg.png", UriKind.RelativeOrAbsolute)) };
}
或C#
private void Button1_Click(object sender, RoutedEventArgs e)
{
BitmapImage bmp = new BitmapImage();
Uri u = new Uri("ms-appx:/Images/timer.png", UriKind.RelativeOrAbsolute);
bmp.UriSource = u;
// NOTE: change starts here
Image i = new Image();
i.Source = bmp;
button1.Content = i;
}