2014-03-12 33 views
1

下面的代码和ErrorHandler在我的代码后面被调用。Validation.Error与校准微的附加事件

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) 
    { 
      ............ 
    } 

现在我想给传送到使用卡利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:(在我的视图模型)

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> 

感谢。

+0

我不认为你可以做'Validation.Error'作为Caliburn.Micro可能找不到它。不确定在执行'Message.Attach'时是否支持附加属性。 –

+0

我不确定是否.. –

+0

无论如何你想做什么?为什么你想要处理ErrorsChanged? –

回答

2

我有同样的问题,它似乎是我找到了答案

using attached events with caliburn micro Message.Attach

这不是你在寻找什么。但我相信,这应该有所帮助。

编辑:

另一个额外的伎俩。这里是我的代码片段:

<TextBox Grid.Row="2" > 
    <i:Interaction.Triggers> 
     <ui:RoutedEventTrigger RoutedEvent="Validation.ValidationError"> 
      <cal:ActionMessage MethodName="OnTextboxError"> 
       <cal:Parameter Value="$source" /> 
       <cal:Parameter Value="$eventArgs" /> 
      </cal:ActionMessage> 
     </ui:RoutedEventTrigger> 
    </i:Interaction.Triggers> 

    <TextBox.Text> 
     <Binding Path="TTT" NotifyOnValidationError="True" > 
      <Binding.ValidationRules> 
       <ui:TextValidationRule ValidationStep="UpdatedValue" /> 
      </Binding.ValidationRules> 
     </Binding> 
    </TextBox.Text> 
</TextBox> 


public void OnTextboxError(object sender, ValidationErrorEventArgs e) 
{ 

} 

因此,关键是:“RoutedEvent =” Validation.ValidationError“”

+1

我实际上不再使用它,WPF验证以及我我会用“吸”这个词。 但是,由于我相信你所做的一切都会起作用,Message.Attach的所有问题似乎都是使用Shorted语法发生的。 –

+0

我同意你的意见。这是一种deli妄。我花了几天的时间来确定为什么文本框验证“工作的很好”,但是datagrid列验证无法正常工作。更重要的是,我获得的每个新知识都将在下一个任务中无用。 –