如何将对象传递给wp7上的click事件方法

时间:2012-08-08 18:44:18

标签: windows-phone-7 button click

我正在创建一个按钮(不是xaml,因为它是一组按钮,应根据特定需要动态创建,而不是经常出现)。 当你想告诉按钮做什么时,你要为click事件添加一个方法,如下所示:

btn.Click += b_ClickMethod;

并且b_clickMethod具有以下签名:

private void b_ClickMethod(object sender, RoutedEventArgs e)

我的问题是如何(或者甚至我实际上可以)将某个对象作为发送者传递以便将信息传递给该方法。如果此对象已经设置在其他地方,那么它代表什么?

1 个答案:

答案 0 :(得分:0)

我通常从对象获取信息到其事件处理程序的方式是使用其DataContext。如果这是你的选择(很难分辨它),这是一件非常容易的事情。如果设置了按钮的DataContext(您可以很容易地从代码隐藏中执行此操作),您可以像这样访问它:

private void b_ClickMethod(object sender, RoutedEventArgs e)
{
    // Let's say you're trying to pass a Car-object
    var car = sender.DataContext as Car;

    // Manipulate away.
}

您设置DataContext的方式非常简单:

CarViewModel someViewModel = new ViewModel(); // or whatever
Car someCarObject = someViewModel.getSomeCar(); // basically - find the object you would like to send.
btn.DataContext = someCarObject;

希望这会有所帮助。作为结束语,您可能想重新考虑创建这样的按钮。如果您在某些情况下只需要按钮,只需将这些按钮的Visibility参数设置为Visibility.Hidden即可获得更清晰的代码。