读书人

WPF中Button参数传递有关问题

发布时间: 2013-01-05 15:20:39 作者: rapoo

WPF中Button参数传递问题
在代码中用for循环new出了若干个button,这些button共用一个事件Img_Click,
但现在我用Img_Click能够实现多个事件的switch,请问各位大侠请问这个参数怎么传递?
代码如下:

private void Img_Click(object sender, RoutedEventArgs e) {
Button btn = (Button)sender;

DetailsImage(CrossRoadState.南丁字路口.ToString());
}

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) {
DataGridIntro.CrossingArray _CrossingArray = new DataGridIntro.CrossingArray();
int index = Convert.ToInt32(cmb.SelectedValue)-1;

if (index >= _CrossingArray.Count || index == -2) return;
CrossRoadPixture.Children.Clear();
for (int i = 0; i < Ceiling(_CrossingArray[index].Count); i++) {
StackPanel _StackPanel = new StackPanel();
_StackPanel.Orientation = Orientation.Horizontal;
_StackPanel.Margin = new Thickness(10, 10, 0, 10);
for (int j = 0; j < 2; j++) {
if (i * 2 + j >= _CrossingArray[index].Count) break;
StackPanel _InStackPanel = new StackPanel();
_InStackPanel.Orientation = Orientation.Vertical;
_InStackPanel.Margin = new Thickness(10, 10, 0, 10);
Button _Button = new Button();
_Button.Click += new RoutedEventHandler(Img_Click);

StackPanel _StackOnButton = new StackPanel();
BitmapImage imageBitmap = new BitmapImage(new Uri(_CrossingArray[index][i*2+j].ImagePath, UriKind.Absolute));

Image _Image = new Image();


_Image.Margin = new Thickness(10, 10, 10, 10);
_Image.Width = 150;
_Image.Height = 150;
_Image.Source = imageBitmap;
_StackOnButton.Children.Add(_Image);

_Button.Content = _StackOnButton;
_InStackPanel.Children.Add(_Button);
_StackPanel.Children.Add(_InStackPanel);
}
CrossRoadPixture.Children.Add(_StackPanel);
}
}


在线等。。。
[解决办法]
Button?_Button?=?new?Button();
_Button.Tag=你的参数;
_Button.Click?+=?new?RoutedEventHandler(Img_Click);

void Img_Click(object sender, RoutedEventArgs e) {
Button btn = (Button)sender;

DetailsImage(btn.Tag.ToString());
}

[解决办法]
楼上真解,Tag是一个object类型的属性,专门用来存储用户自定义参数和对象的。

读书人网 >CAD教程

热点推荐