WPF在特定事件发生之前执行函数?

时间:2011-03-09 16:35:39

标签: c# .net wpf

有没有办法在事件发生之前执行一段代码?

当我们说Expanded =“OnExpand”时的例子 这里OnExpand中的代码发生在Expanded事件发生之后。如果我想在此之前执行一段代码怎么办?

3 个答案:

答案 0 :(得分:3)

您可以使用预览活动

可能解决没有PreviewExpanded事件的扩展器的问题是处理PreviewMouseDown事件并执行命中测试以查看它是否在Toggle Button上。

或者,也可以扩展扩展器类 我根本不测试这个,不知道它是否真的有用

public class MyExpander: Expander
{
    public event EventHandler<EventArgs> PreviewExpanded;

    public void OnPreviewExpanded()
    {
       PreviewExpanded(this,new EventArgs());
    }

    public override void OnExpanded()
    {
       PreviewExpanded()
       base.OnExpanded();
    }
}

答案 1 :(得分:2)

如果您正在谈论Expander控件,您可以将其子类化并覆盖IsExpanded属性,在调用base.IsExpanded = value;之前引发自己的PreviewExpanded事件

答案 2 :(得分:1)

如果您正在使用的任何对象支持此行为,则它将处于匹配的“预览”事件中。所以,这两个事件是匹配前后的集合。 的KeyDown() PreviewKeyDown()

Expander没有Expanded的预览事件,如果你正在使用它。