繁体   English   中英

监视 ListView.View 更改

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM