我有下面的UserControl,试图接受用户提供的Validation
函数。代码“似乎”是罚款,设计师没有抱怨,编译罚款,应用程序运行..但回调永远不会触发有Maven能指出我还缺少什么吗?
namespace MyNamespace
{
[Category("Behavior")]
public delegate bool FlowValidationEvent(FlowStep currentStep);
public partial class FlowStep : UserControl
{
public event FlowValidationEvent Validation;
public static readonly DependencyProperty ValidationProperty =
DependencyProperty.Register(
nameof(Validation),
typeof(FlowValidationEvent),
typeof(FlowStep),
new FrameworkPropertyMetadata(null)
);
public bool Validate()
{
if (Validation!= null)
return Validation.Invoke(this);
return true;
}
public FlowStep()
{
InitializeComponent();
}
}
}
在消费者控件级别,我创建了一个虚拟验证函数,并通过XAML传递它:
public bool Step1_Validation(FlowStep currentStep)
{
Log.Debug("CALL ME BABE!");
}
它甚至能够看到它,甚至在XAML设计器中建议,所以我认为在DependencyProperty
级别,它似乎很好(XAML设计器理解它)?
当启动时,我检查元素,不出所料,Validation
属性甚至没有显示在我的对象中。
当我实际触发“Next”按钮并尝试调用Validate
函数时,event
是null
.
1条答案
按热度按时间fgw7neuy1#
实际上,我是在复杂的事情。对于
event
,我不需要将其注册为DependencyProperty
,简单的声明就可以工作。我所需要的是以下内容,我的代码的其余部分按预期工作:需要注意的一点是,尽管在我的类中声明了事件属性
Validation
,但我们仍然不会在运行时的构造函数中看到它(奇怪)。