【发布时间】:2017-10-12 09:19:12
【问题描述】:
我想从 GridView 的 ListView 后面的代码中设置样式。由于那是 ListView.View 依赖属性,我想监视它何时更改。
尝试添加来自this answer的依赖属性更改回调:
var handler = new DependencyPropertyChangedEventHandler(Handler);
DependencyPropertyDescriptor.FromProperty(ListView.ViewProperty,
typeof(ListView)).AddValueChanged(listView, handler);
处理程序在哪里
void Handler(object sender, DependencyPropertyChangedEventArgs e) { ... }
会导致编译错误:
错误 CS1503 参数 2:无法从“System.Windows.DependencyPropertyChangedEventHandler”转换为“System.EventHandler”
尝试强制转换 (EventHandler)handler 仍然让编译器抱怨:
错误 CS0030 无法将类型“System.Windows.DependencyPropertyChangedEventHandler”转换为“System.EventHandler”
如果我尝试使用标准事件处理程序:
var handler = new EventHandler(Handler);
在哪里
void Handler(object sender, EventArgs e) { ... }
使其可编译,但随后会在运行时崩溃
PresentationFramework.dll 中出现“System.ArgumentException”类型的未处理异常
附加信息:处理程序类型无效。
我还能尝试什么让AddValueChanged 使用依赖属性回调?也许方法是错误的,为什么?当ListView.View 更改时,我还能如何获得通知?
我不想应用 this answer 中的任何一个解决方案:不能使用绑定(值将在 xaml 中设置)并且不想只为此创建 MyListView。
【问题讨论】:
标签: c# wpf listview dependency-properties