Validation
The DataGrid allows you to validate the data and display hints if the validation is not passed. To benefit from this feature, the objects populating the ItemsSource
of the component need to implement the INotifyDataErrorInfo
interface.
ValidateViewModelBase
You can use the ValidateViewModelBase
class, which provides an implementation of INotifyDataErrorInfo
to quickly set up your objects. The following examples demonstrate how to populate the DataGrid with objects that include some custom validation logic.
Define the DataGrid in XAML
<Grid xmlns:telerikGrid="using:Telerik.UI.Xaml.Controls.Grid">
<Grid.DataContext>
<local:ViewModel />
</Grid.DataContext>
<telerikGrid:RadDataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False" UserEditMode="Inline" >
<telerikGrid:RadDataGrid.Columns>
<telerikGrid:DataGridDateColumn PropertyName="Date" CellContentFormat="{}{0:d}"/>
</telerikGrid:RadDataGrid.Columns>
</telerikGrid:RadDataGrid>
</Grid>
Define the Model and ViewModel
public class ViewModel
{
public ViewModel()
{
this.Items = this.GetData();
}
public ObservableCollection<Data> Items { get; set; }
private ObservableCollection<Data> GetData()
{
var data = new ObservableCollection<Data>();
for (var i = 0; i < 10; i++)
{
data.Add(new Data { Date = DateTime.Today.AddDays(-i) });
}
return data;
}
}
public class Data : ValidateViewModelBase
{
private readonly DateTimeOffset maxDate = DateTime.Today.AddDays(10);
private DateTimeOffset date;
public DateTimeOffset Date
{
get
{
return this.date;
}
set
{
this.date = value;
if (this.date > this.maxDate)
{
this.AddError("Date", string.Format("Date cannot be set after {0:d}.", this.maxDate));
}
else
{
this.RemoveErrors("Date");
}
this.OnPropertyChanged();
}
}
}