<telerik:RadGridView Name="grdOrders" Grid.Row="1" AutoGenerateColumns="False" ItemsSource="{Binding LineItems}" SelectedItem="{Binding Path=SelectedLineItem}" IsSynchronizedWithCurrentItem="True" IsReadOnly="True" ClipboardCopyMode="Cells" RowStyleSelector="{StaticResource backorderStyleSelector}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" MouseDoubleClick="grdOrders_MouseDoubleClick" SelectionMode="Extended"> <i:Interaction.Behaviors> <b:MultiSelectBehavior SelectedItems="{Binding Path=SelectedLineItems}" /> </i:Interaction.Behaviors> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=GPPONumber}" Header="GP PO Number" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=LineItemId}" Header="Line Item Id" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=Quantity}" Header="Quantity" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=PartNumber}" Header="Part Number" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=Description}" Header="Description" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=WarehouseCode}" Header="Warehouse" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=WarehouseBin}" Header="Bin Location" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=ShippingMethod}" Header="Shipping Method" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=VendorName}" Header="Vendor Name" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=Salesrep}" Header="Sales Rep" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=SourcedBy}" Header="Sourced By" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=Backordered}" Header="B/O?" /> </telerik:RadGridView.Columns> </telerik:RadGridView>public ObservableCollection<WarehouseLineItemProxy> LineItems { get { return lineItems; } set { lineItems = value; RaisePropertyChanged(() => LineItems); ViewOrderInfoCommand.RaiseCanExecuteChanged(); } }refreshTimer = new DispatcherTimer();refreshTimer.Interval = TimeSpan.FromSeconds(60);refreshTimer.Tick += new EventHandler(refreshTimer_Tick);/// <summary> /// Handles the Tick event of the refreshTimer control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void refreshTimer_Tick(object sender, EventArgs e) { refreshTimer.Stop(); RefreshLineItems(new object()); refreshTimer.Start(); }/// <summary> /// Refreshes the line items. /// </summary> /// <param name="arg">The arg.</param> private void RefreshLineItems(object arg) { if (!worker.IsBusy) { ShowBusyIndicator = true; worker.RunWorkerAsync(); refreshTimer.Stop(); refreshTimer.Start(); } }/// <summary> /// Handles the DoWork event of the worker control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.ComponentModel.DoWorkEventArgs"/> instance containing the event data.</param> private void worker_DoWork(object sender, DoWorkEventArgs e) { e.Result = adapter.LoadWarehouseOrders(); }/// <summary> /// Handles the RunWorkerCompleted event of the worker control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.ComponentModel.RunWorkerCompletedEventArgs"/> instance containing the event data.</param> private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { Dispatcher.CurrentDispatcher.BeginInvoke(new Action<ObservableCollection<WarehouseLineItemProxy>>(this.UpdateGridData), e.Result); } /// <summary> /// Updates the grid data. /// </summary> /// <param name="lineItems">The line items.</param> private void UpdateGridData(ObservableCollection<WarehouseLineItemProxy> lineItems) { LineItems = lineItems; ShowBusyIndicator = false; }<ControlTemplate x:Key="EditAppointmentTemplate" TargetType="{x:Type telerik:SchedulerDialog}">
<Grid VerticalAlignment="Center" Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="Number of Tap Activity" Height="25"/>
<telerik:RadNumericUpDown Grid.Column="1" Height="25" Width="50" NumberDecimalDigits="0" ValueFormat="Numeric" HorizontalAlignment="Left"
Value="{Binding Occurrence.Appointment.TapActivityNum, Mode=TwoWay}" />
</Grid>
</ControlTemplate>
<Style x:Key="EditAppointmentStyle" TargetType="telerik:SchedulerDialog">
<Setter Property="Width" Value="250" />
<Setter Property="Height" Value="100" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template" Value="{StaticResource EditAppointmentTemplate}" />
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Number of Tap Activity" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>

foreach (ClienteBE _cliente in this.lstCliente) { tam = _cliente.Nome.Length > tam ? _cliente.Nome.Length : tam; this.cmbCliente.DisplayMemberPath = "Nome"; this.cmbCliente.Items.Add(_cliente); }Hi,
I am working with RadGridView, in MVVM WPF application and I need to validate cell compared to other values in binding collection.
I have a object :
public class MyObject
{
public DateTime DateBegin { get; set;}
public int Value { get; set;}
}
And if I add a new row in my GridView with existing Date I want to show error message in cell.
I thought to use an ValidationRules in my cell, but i am not sure if i can compared to with others values in binding list.
I found some solution, but isn't MVVM compliant :
public void RadGridView1_CellValidating(object sender, GridViewCellValidatingEventArgs e) { bool isValid = true; string validationText = "Validation failed. "; if(cell.column.uniquename == "mydatecolumn") { GridViewCell cell = e.Cell; isValid = ValidateDate((datetime) e.NewValue); if (!isValid) { validationText += "You already used that date, mate."; } }} private static bool ValidateDate(datetime newDate) { // Some linq to see if it's in your collection or not }