問題属性:
EntityCollectionViewに新しい項目を追加する文字列フィールドに必要な検証を上げたが、私の目的のために、我々はサーバー側で検証した後、それを表示する必要があります。
実際の行動:ここ
であるメタデータファイルからコード:EF。文字列フィールドに必要な検証エラーが[必須]なし上げる
[MetadataTypeAttribute(typeof(SomeEntityMetadata))]
public partial class SomeEntity
{
[EntityName]
internal sealed class SomeEntityMetadata
{
private SomeEntityMetadata()
{
}
public long Id { get; set; }
[EntityName(Name = "Name", OrderIndex = 2)]
public string Name { get; set; }
[EntityName(Name = "Data Type", OrderIndex = 1)]
public string Type { get; set; }
}
}
とXAMLでDataGrid
にバインドさこの項目のコレクション:
<navigation:DataGridTemplateColumn CanUserReorder="True"
CanUserSort="True"
Header="Name"
SortMemberPath="Name">
<navigation:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock VerticalAlignment="Center" Text="{Binding Name}"/>
</DataTemplate>
</navigation:DataGridTemplateColumn.CellTemplate>
<navigation:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Name, Mode=TwoWay}" Height="Auto"/>
</DataTemplate>
</navigation:DataGridTemplateColumn.CellEditingTemplate>
</navigation:DataGridTemplateColumn>
<navigation:DataGridTemplateColumn CanUserFilter="True"
CanUserSort="True"
Header="Type"
SortMemberPath="Type">
<navigation:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock VerticalAlignment="Center" Text="{Binding Type}" />
</DataTemplate>
</navigation:DataGridTemplateColumn.CellTemplate>
<navigation:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataTypes, Source={StaticResource entityViewModel}}" SelectedItem="{Binding Type, Mode=TwoWay}/>
</DataTemplate>
</navigation:DataGridTemplateColumn.CellEditingTemplate>
</navigation:DataGridTemplateColumn>
ご覧のとおりフィールドには[Required]
属性はありませんが、新しいアイテムwを挿入するとString.Empty
にエラーを設定Name
とType
フィールドi番目の「名前のフィールドが必要とされ、」と表示され、「Typeフィールドが必要です」。
必要な行動: スキップ検証を必要とName
またはType
フィールドが空の場合、サーバーからValidationException
を投げます。
注:Silverlight、EF、WCF RIA、MVVM。
検証例外自体を投げたければ、とにかくサーバーからそれをやりたいのですが、サーバーからの往復を節約するために、wcf Riaサービスで簡単にできました。 –
@AkashKava、そうですが、文脈の中でいくつかの複雑なチェックをする必要があります。 –