我有一个使用DataTemplates从XML文件填充的列表视图。在每一行上都会生成一个按钮。当您单击按钮时,我想对该行上的值执行某些操作。到目前为止一切都很好。
我实际上正在使用此帖子的第三个答案here。
此解决方案的实际代码(含有神秘评论)是:
private void btnMoveFDAup(object sender, RoutedEventArgs e)
{
Button btn = ((Button)sender);
// btn.DataContext will get you to the row object where you can retrieve the ID
}
当我在调试器的Watch Window中查看btn.DataContext时,我看到了我需要的所有精彩数据: Watch window output http://gilgameshcontrite.com/images/Debug.jpg
问题是:我如何访问这些数据?我需要输入'姓名'和几个布尔;但我完全无能为力。
各种尝试,如
string name = btn.DataContext.Name;
抛出编译器错误。
提前致谢!
答案 0 :(得分:3)
您需要将btn.DataContext
投射到LVData
:
var lvData = (LVData)btn.DataContext;
// now you can access lvData.Name, ...
您收到编译错误,因为btn.DataContext
属于object类型,并且对LVData
成员一无所知。在运行时,它可以指向任何类实例(因为所有类都继承自object
)。您告诉编译器btn.DataContext
通过强制转换为LVData
实例。
(此处有更多解释:polymorphism,casting。您将始终需要这些。)