[英]Monitor for ListView.View changes
我想从后面的代码为ListView
GridView
设置样式。 由于那是ListView.View
依赖属性,我想监视它何时更改。
尝试从这个答案添加依赖属性更改回调:
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
更改时,我还能如何获得通知?
我不想应用此答案中的任何一个解决方案:不能使用绑定(值将在 xaml 中设置)并且不想仅为此创建MyListView
。
这对我有用:
public MainWindow()
{
InitializeComponent();
DependencyPropertyDescriptor
.FromProperty(ListView.ViewProperty, typeof(ListView))
.AddValueChanged(listView, ViewChanged);
listView.View = new GridView();
}
private void ViewChanged(object sender, EventArgs e)
{
Debug.WriteLine("ViewChanged");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.