我想编写一个通用测试,我可以在没有WPF应用程序且没有TraceLogger(监听器)的情况下运行。
通用测试用于比较Interface与UserControl的绑定,以查看是否缺少绑定或绑定太多。
ivm是viewmodel的接口类型 v是一个视图
v应该绑定到ivm。
var names_binding = listener.bindNames.Distinct(); //this is what i want to get rid of.
var names_interface = ivm.GetProperties().Select(prop => prop.Name).Distinct();
var tooMany = names_interface.Except(names_binding);
var tooFew = names_binding.Except(names_interface);
我可以使用类似下面的代码获取我在某些条件下绑定的名称列表。 listener
监听绑定错误的位置。
object obj = new object();
T_V view = new T_V();
view.DataContext = obj; // empty object - all binding will fail
DoEvents(); // Do Events pumps WPF so binding happens
我想用检查用户控件并提供所有绑定名称的代码替换它。我无法看到如何从用户控件获取所有绑定。我需要某种起点。
因此,本质上我寻找一个实现,提供绑定或完整绑定路径的属性名称。有没有办法从UserControl获取该信息?
public IEnumerable<string> GetBindingPaths<T_V>() where T_V : UserControl, new()
{
var ret = Enumerable.Empty<string>();
T_V view = new T_V();
//// view.GetBindingExpression ???
//// view.GetLocalValueEnumerator ???
return ret;
}
答案 0 :(得分:0)
我正在寻找方法Html.HiddenFor
。我只是没有得到如何立即使用它。以下是一个示例实现:
GetLocalValueEnumerator