【发布时间】:2014-05-27 07:56:44
【问题描述】:
假设我有一个绑定到某个 DataContext 的 WPF 控件。现在假设我有一些 UI 代码需要从 DataContext 中获取一些值。我该怎么做?
我知道以下解决方法:
-
将 DataContext 转换为其原始类型,例如
var myValue = ((MyViewModel)myControl.DataContext).SomeProperty;或
var myValue = ((DataRowView)myControl.DataContext).Item("SomeDatabaseField");我不喜欢这样,因为这意味着在我的 UI 代码中我需要有关底层数据源类型的信息。
-
将所需的值绑定到某个 UI 字段并从那里提取它,例如
<Button Click="..." Tag="{Binding SomeProperty}" />在代码中
var myValue = (TypeOfMyValue)myButton.Tag;
是否有一些 通用 方法可以从 DataContext 中提取值,即执行 Binding 所做的任何事情来获取值?我正在寻找这样的东西:
var myValue = SomeGenericExtractMethod(myControl.DataContext, "SomeProperty");
我很确定存在这样的东西(毕竟Binding 是这样工作的),我就是找不到它......
【问题讨论】:
标签: c# wpf data-binding datacontext