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



我正在创建一个按钮(不是使用 xaml,因为它是一组按钮,应该根据特定需求动态创建,而不是一直存在)。当您想要告诉按钮要做什么时,您将向单击事件添加一个方法,如下所示:

btn.Click += b_ClickMethod;

并且b_clickMethod具有以下签名:

private void b_ClickMethod(object sender, RoutedEventArgs e)

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

我通常将信息从对象获取到其事件处理程序的方式是使用其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.
}

设置数据上下文的方式很简单:

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,则会有更干净的代码。

最新更新