有没有办法在事件发生之前执行一段代码?
当我们说Expanded =“OnExpand”时的例子 这里OnExpand中的代码发生在Expanded事件发生之后。如果我想在此之前执行一段代码怎么办?
答案 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的预览事件,如果你正在使用它。