我正在创建一个按钮(不是xaml,因为它是一组按钮,应根据特定需要动态创建,而不是经常出现)。 当你想告诉按钮做什么时,你要为click事件添加一个方法,如下所示:
btn.Click += b_ClickMethod;
并且b_clickMethod具有以下签名:
private void b_ClickMethod(object sender, RoutedEventArgs e)
我的问题是如何(或者甚至我实际上可以)将某个对象作为发送者传递以便将信息传递给该方法。如果此对象已经设置在其他地方,那么它代表什么?
答案 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
即可获得更清晰的代码。