【发布时间】:2014-03-12 18:24:20
【问题描述】:
下面的作品和我后面的代码中的ErrorHandler被调用。
XAML:
<Window Validation.Error="ErrorHandler">
<TextBox>
<TextBox.Text>
<Binding Path="SomeProperty" NotifyOnValidationError="True">
<local:MyValidationRule />
</Binding>
</TextBox.Text>
</TextBox>
</Window>
CS:
private void ErrorHandler(object sender, ValidationErrorEventArgs e)
{
............
}
现在我想使用 Caliburn Micro 的 Message.Attach 将其传输到我的 ViewModel 委托方法永远不会被调用,知道为什么吗?
XAML:
<Window cal:Message.Attach="[Event Validation.Error] = [Action OnErrorsChanged($eventArgs)]">
<TextBox>
<TextBox.Text>
<Binding Path="SomeProperty" NotifyOnValidationError="True">
<local:MyValidationRule />
</Binding>
</TextBox.Text>
</TextBox>
</Window>
CS:(在我的 ViewModel 中)
private void OnErrorsChanged(ValidationErrorEventArgs e)
{
............ this code is never reached.
}
编辑:这也不起作用
<i:Interaction.Triggers>
<i:EventTrigger EventName="Validation.Error">
<cal:ActionMessage MethodName="OnErrorsChanged" />
</i:EventTrigger>
</i:Interaction.Triggers>
谢谢。
【问题讨论】:
-
我不认为你可以这样做
Validation.Error因为 Caliburn.Micro 可能找不到它。不确定在执行Message.Attach时是否支持附加属性。 -
我也不确定..
-
你到底想做什么?为什么要处理 ErrorsChanged?
-
是的,但验证错误是由我认为的自定义控件的内部工作引起的,它与我的 ViewModel 中的任何属性无关,我只想通知我的 ViewModel引发了 Validation.Error 事件并传递了参数,我可以想办法做到这一点,但我希望这种简单的工作方式。
标签: wpf xaml caliburn.micro