2012-02-22 1 views
1

を実施しました。私は、ビューモデルでは、このクラスのインスタンスを持っている:IDataErrorInfoは、私は、エンティティ・クラスを有するエンティティクラスによって

<TextBox Grid.Row="0" Grid.Column="1" x:Name="Project_Name" Margin="4"/> 
<TextBox Grid.Row="0" Grid.Column="2" x:Name="Project_Description" Margin="4"/> 

INotifyPropertyChangedのはうまく動作しますが、IDataErrorInfoない:

public class ProjectEditViewModel : Screen 
{ 
    public Project Project { get; set; } 

    .... 
} 

私はビューでこのデータを表示しています。 IDataErrorInfoは、viewmodelによって実装されている場合にのみ動作します。 viewmodelではなくエンティティオブジェクトに対してこの検証を行う簡単な方法はありますか?

このアスペクト指向プログラミングによるデータ検証は、私には最高の意味を持ちますので、私はそれを使いたいと思います。

そして、これは何とか私の問題で接続されている場合、私は検証エラーを表示するには、このスタイルを使用しています:私は明白であるものを何かを逃した場合

<Style TargetType="{x:Type TextBox}"> 
    <Style.Triggers> 
    <Trigger Property="Validation.HasError" Value="true"> 
     <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}"/> 
    </Trigger> 
    </Style.Triggers> 
</Style> 

XAMLの私の理解では、とても残念本当に悪いです。

私はCaliburnMicroの議論でも、この質問をした:http://caliburnmicro.codeplex.com/discussions/338196

答えて

1

をあなたはテキストをバインドするBindingを使用している場合は、バインディングのValidatesOnDataErrors=Trueプロパティを設定します。これが役立つことを願っています。

<TextBox Grid.Row="0" Grid.Column="1" x:Name="Project_Name" Margin="4" 
     Text="{Binding Project.Name, ValidatesOnDataErrors=True}" /> 
+0

これは機能しますが、これを行う方法は他にもあります。私は、私は私のプロジェクトタイプのためにbinding.ValidatesOnDataErrors = trueを設定するために、ConventionManager.ApplyValidationを強制すると、それが動作することを発見しました。だから私はこの慣習を変更しなければならないようです。 –

関連する問題