2

我有一个使用 DataTemplates 从 XML 文件填充的列表视图。在每一行上都会生成一个按钮。当您单击按钮时,我想对该行上的值做一些事情。到目前为止,一切都很好。

我实际上在这里使用了这个线程的第三个答案。

此解决方案的实际代码(带有神秘注释)是:

    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
}

当我在调试器的监视窗口中查看 btn.DataContext 时,我看到了我需要的所有精彩数据: 观察窗口输出

问题是:我如何访问这些数据?我需要输入“名称”和几个布尔值;但我完全一无所知。

各种尝试如

string name = btn.DataContext.Name;

只是抛出编译器错误。

提前致谢!

4

1 回答 1

3

您需要转换btn.DataContextLVData

var lvData = (LVData)btn.DataContext;
// now you can access lvData.Name, ...

您收到一个编译错误,因为btn.DataContext它是 object 类型并且对成员一无所知LVData。在运行时,它可以指向任何类实例(因为所有类都继承自object)。您通过强制转换告诉编译器btn.DataContext指向一个LVData实例。

(这里有更多解释:polymorphismcasts。你将一直需要这个。)

于 2013-06-17T17:36:20.590 回答