class MaxEnumFlagsDescriptor : FilterDescriptor
{
private FilterDescriptor<MaintenanceBoxDataDataTableRow> Filter;
private string dataMember;
/// <summary>
/// Initializes a new instance of the <see cref="MaxEnumFlagsDescriptor"/> class.
/// </summary>
/// <param name="control">The column.</param>
/// <param name="dataMember">The data member.</param>
/// <param name="enumType">Type of the enum.</param>
public MaxEnumFlagsDescriptor(MaxFilteringControl control, string dataMember, Type enumType)
{
if (dataMember.StartsWith("["))
dataMember = dataMember.RemoveFromStart(1).RemoveFromEnd(1);
this.Control = control;
this.Column = control.GridColumn as GridViewBoundColumnBase;
this.dataMember = dataMember;
this.EnumType = enumType;
Filter = new FilterDescriptor<MaintenanceBoxDataDataTableRow>();
Filter.FilteringExpression = (e) => (Check(e));
}
/// <summary>
/// Creates the filter expression.
/// </summary>
/// <param name="instance">The instance.</param>
/// <returns></returns>
public override System.Linq.Expressions.Expression CreateFilterExpression(System.Linq.Expressions.Expression instance)
{
return Filter.CreateFilterExpression(instance);
}
private bool Check(DataRow row)
{
if (this.DistinctValue == null || !this.Control.IsActive)
return true;
var desc = this.DistinctValue; // this was available in the ColumnFilterDescriptor. originaly
// in the class (so how to get it..)
// HOW TO GET THE CHECKED VALUES OF THE DISTINCT VALUE LIST
if (!desc.Any())
return true;
Debug.Assert(row != null, "Should have found a Row");
if (row != null)
{
var inf = row[this.dataMember];
if (inf == DBNull.Value)
inf = null;
if (inf == null)
return desc.Any(c => c == null);
else
{
var enumType = this.EnumType;
try
{
var val = Enum.ToObject(enumType, inf).ToString();
return desc.Any(c => IsInclude(c, val, enumType));
}
catch (System.Exception ex)
{
// In case of old value
Debug.Fail(ex.Message);
return false;
}
}
}
return true;
}
private static bool IsInclude(object value, string data, Type enumType)
{
var val = Enum.ToObject(enumType, value).ToString();
return data.IndexOf(val) >= 0;
}
}
<code>CanUserFreezeColumns="False" RowIndicatorVisibility="Collapsed" AutoGenerateColumns="False" IsReadOnly="True" ScrollMode="Deferred" telerik:StyleManager.Theme="Metro" FontSize="11" ShowGroupPanel="False" RowHeight="18" Grid.Row="1" Width="1320" MaxWidth="1320" MinHeight="800" MaxHeight="1000"</code><Window x:Class="WpfApplication1.Window1" Title="Window1" Height="300" Width="565" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" Loaded="Window_Loaded"> <Grid> <telerik:RadGridView Name="radGridView1" AddingNewDataItem="radGridView1_AddingNewDataItem" ShowInsertRow="True"> </telerik:RadGridView> </Grid></Window>using System;using System.Windows;using System.Collections.ObjectModel;namespace WpfApplication1{ /// <summary> /// Interaction logic for Window1.xaml /// </summary> public partial class Window1 : Window { public Window1() { InitializeComponent(); } public ObservableCollection<Employee> GetEmployees() { ObservableCollection<Employee> employees = new ObservableCollection<Employee>(); return employees; } private void radGridView1_AddingNewDataItem(object sender, Telerik.Windows.Controls.GridView.GridViewAddingNewEventArgs e) { e.NewObject = new Employee(); } private void Window_Loaded(object sender, RoutedEventArgs e) { this.radGridView1.ItemsSource = this.GetEmployees(); } } public class Employee { string _FirstName; public string FirstName { get { return _FirstName; } set { if (value.Length > 5) { throw new Exception("Firstname must be less than 6"); } _FirstName = value; } } }}cell.PreferredWidth = new TableWidthUnit((float)columns[i].ActualWidth);<telerik:RadTileView> <telerik:RadTileViewItem> <Grid x:Name="LayoutRoot" Background="White"> <Grid.Resources> <Style TargetType="ListViewItem"> <Setter Property="telerik:DragDropManager.AllowCapturedDrag" Value="True"></Setter> </Style> <DataTemplate x:Key="ApplicationTemplate"> <StackPanel Orientation="Horizontal"> <TextBlock Margin="5" Text="{Binding Name}" VerticalAlignment="Center"></TextBlock> </StackPanel> </DataTemplate> </Grid.Resources> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <ListView x:Name="ApplicationList" ItemTemplate="{StaticResource ApplicationTemplate}" AllowDrop="True"/> <ListView x:Name="MyAppList" Background="Gray" Grid.Column="1" ItemTemplate="{StaticResource ApplicationTemplate}" AllowDrop="True"/> </Grid> </telerik:RadTileViewItem></telerik:RadTileView>public partial class MainWindow : Window{ public MainWindow() { InitializeComponent(); ObservableCollection<Item> items = new ObservableCollection<Item>(); for (int i = 1; i <= 10; i++) items.Add(new Item() { Name = string.Format("item {0}", i) }); ApplicationList.ItemsSource = items; MyAppList.ItemsSource = new ObservableCollection<Item>(); DragDropManager.AddDragInitializeHandler(ApplicationList, OnDragInitialize); DragDropManager.AddDragInitializeHandler(MyAppList, OnDragInitialize); DragDropManager.AddGiveFeedbackHandler(ApplicationList, OnGiveFeedback); DragDropManager.AddGiveFeedbackHandler(MyAppList, OnGiveFeedback); DragDropManager.AddDragDropCompletedHandler(ApplicationList, OnDragCompleted); DragDropManager.AddDragDropCompletedHandler(MyAppList, OnDragCompleted); DragDropManager.AddDropHandler(ApplicationList, OnDrop); DragDropManager.AddDropHandler(MyAppList, OnDrop); } private void OnDragInitialize(object sender, DragInitializeEventArgs args) { args.AllowedEffects = DragDropEffects.Move; //args.AllowedEffects = DragDropEffects.All; args.Data = ((FrameworkElement)args.OriginalSource).DataContext; args.DragVisual = new ContentControl { Content = args.Data, ContentTemplate = LayoutRoot.Resources["ApplicationTemplate"] as DataTemplate }; } private void OnGiveFeedback(object sender, Telerik.Windows.DragDrop.GiveFeedbackEventArgs args) { System.Diagnostics.Trace.WriteLine(string.Format("{0} - OnGiveFeedback sender={1}", DateTime.Now, sender)); args.SetCursor(Cursors.Arrow); args.Handled = true; } private void OnDrop(object sender, Telerik.Windows.DragDrop.DragEventArgs args) { System.Diagnostics.Trace.WriteLine(string.Format("{0} - OnDrop sender={1}", DateTime.Now, sender)); ((IList)(sender as ListBox).ItemsSource).Add(((DataObject)args.Data).GetData(typeof(Item))); } public void OnDragCompleted(object sender, Telerik.Windows.DragDrop.DragDropCompletedEventArgs args) { System.Diagnostics.Trace.WriteLine(string.Format("{0} - OnDragCompleted sender={1}", DateTime.Now, sender)); ((IList)(sender as ListBox).ItemsSource).Remove(args.Data); }}public class Item{ public string Name { get; set; }}