我有一个使用 DataTemplates 从 XML 文件填充的 ListView 。每行都会生成一个按钮。当您单击按钮时,我想对该行上的值执行某些操作。到目前为止一切顺利。
我实际上正在使用此线程的第三个答案 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
}
当我在调试器的监 window 口中查看 btn.DataContext 时,我看到了我需要的所有精彩数据:
问题是:我如何访问这些数据?我需要输入“名称”和几个 bool 值;但我完全不知道。
各种尝试,例如
string name = btn.DataContext.Name;
只是抛出编译器错误。
提前致谢!
最佳答案
您需要将 btn.DataContext
转换为 LVData
:
var lvData = (LVData)btn.DataContext;
// now you can access lvData.Name, ...
您收到编译错误,因为 btn.DataContext
是对象类型,并且不了解 LVData
成员的任何信息。在运行时,它可以指向任何类实例(因为所有类都继承自object
)。您通过强制转换告诉编译器 btn.DataContext
指向 LVData
实例。
(更多说明: polymorphism 、 casting 。您将一直需要这个。)
关于c# - 通过 ListView 中的 DataContext 从行对象获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153067/