0

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

btn.Click += b_ClickMethod;

b_clickMethod 具有以下签名:

private void b_ClickMethod(object sender, RoutedEventArgs e)

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

4

1 回答 1

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.

于 2012-08-08T22:36:48.593 回答