バリデーターを使用して動的に生成されたテキストボックスがいくつかあります。検証エラーが発生した場合は、VM にコマンドを送信してもらいたい。この動作はスタイルに配置されるため、xaml 生成に書き込む必要はありません。
コードは次のとおりです。
<behaviors:Triggers x:Key="validationTrigger" x:Shared="False">
<behaviors:ValidationErrorEventTrigger>
<cmd:EventToCommand Command="{Binding ValidationError,NotifyOnValidationError=True}"
PassEventArgsToCommand="True" />
</behaviors:ValidationErrorEventTrigger>
</behaviors:Triggers>
<Style x:Key="EditableTextBox" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="#DDFFDD" />
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="Red" BorderThickness="2">
<AdornedElementPlaceholder />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="behaviors:OCCInteraction.Triggers" Value="{StaticResource ResourceKey=validationTrigger}" />
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="Background" Value="#FFDDDD"/>
</Trigger>
</Style.Triggers>
</Style>
私が今抱えている問題は、「Onvalidation」イベントが VlidationErrorEventTrigger クラスで呼び出されますが、Viewmodel でコマンドが呼び出されないことです。スタイルではなく直接統合でテストしましたが、このように機能します。
コマンドのバインディングと関係があるのかもしれません...
この説明が問題を解決するのに十分であることを願っています。そうでない場合は教えてください:)