WPF C# 如何在动态添加的grid控件中添加某个网格的单击事件?
展开全部
你在网格中放图片用的是什么控件?Image吗,那为何不直接用Image控件的点击事件,你可以去掉Image的水平和垂直对齐属性让Image充满整个单元格,然后添加Image控件的MouseDown/Up事件(Image好像没有Click事件),这样点击哪个Image,你就更换这个Image的Source不就行了
如果要定位具体是哪个单元格,那可以
void ImageMouseDown(object sender, MouseButtonEventArgs e)
{
if (sender is Image)
{
Image image = sender as Image;
// 以下是Image控件所处Grid的行和列
int RowIndex = Grid.GetRow(image);
int ColumnIndex = Grid.GetColumn(image);
// 也可以在这里更换图片
image.Source = ....
}
}
如果要定位具体是哪个单元格,那可以
void ImageMouseDown(object sender, MouseButtonEventArgs e)
{
if (sender is Image)
{
Image image = sender as Image;
// 以下是Image控件所处Grid的行和列
int RowIndex = Grid.GetRow(image);
int ColumnIndex = Grid.GetColumn(image);
// 也可以在这里更换图片
image.Source = ....
}
}
追问
真心感谢!是用Image控件,但这个控件是动态生成的,比如动态生成10个gird的网格,里面在动态放置10个iamge控件,那么 ImageMouseDown()事件怎么关联?假如是在xaml里面放置好的10个image,我知道可以每个加鼠标左键事件,动态的10个,怎么加?
追答
private void AddImage(string ImageFileName, string tag, int row, int col)
{
Image image = new Image();
// 给image赋值
// ...
image.Tag = tag;
image.MouseDown += new MouseButtonEventHandler(image_MouseDown);
grid.Children.Add(image);
Grid.SetRow(image, row);
Grid.SetColumn(image, col);
}
private void image_MouseDown(object sender, MouseButtonEventArgs e)
{
if (!(sender is Image)) return;
Image image = sender as Image;
if (image.Tag == null) return;
// 这里通过image的Tag属性判断具体点击了哪个Image
switch(image.Tag.ToString())
{
case "Image1":
// 在这里实行图像替换
break;
case "Image2":
break;
// ...
case "Image10":
break;
default: break;
}
}
希望能够帮到你
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询