Ejemplo n.º 1
0
        private void dataGrid_FilterLoading(object sender, DataGridColumnEditableValueEventArgs <IDataGridFilter> e)
        {
            var column = e.Column;

            var multiValueFilter = new DataGridMultiValueFilter();

            multiValueFilter.Style = Resources["VirtualizingMultiValueFilter"] as Style;
            multiValueFilter.SetBinding(DataGridMultiValueFilter.BackgroundProperty, dataGrid, dg => dg.HeaderBackground);
            multiValueFilter.SetBinding(DataGridMultiValueFilter.ForegroundProperty, dataGrid, dg => dg.HeaderForeground);
            multiValueFilter.SetBinding(DataGridMultiValueFilter.BorderBrushProperty, dataGrid, dg => dg.BorderBrush);
            multiValueFilter.SetBinding(DataGridMultiValueFilter.MouseOverBrushProperty, dataGrid, dg => dg.MouseOverBrush);
            multiValueFilter.SetBinding(DataGridMultiValueFilter.PressedBrushProperty, dataGrid, dg => dg.PressedBrush);
            multiValueFilter.SetBinding(DataGridMultiValueFilter.InputBackgroundProperty, dataGrid, dg => dg.RowBackground);
            multiValueFilter.SetBinding(DataGridMultiValueFilter.InputForegroundProperty, dataGrid, dg => dg.RowForeground);
            (e.Value as DataGridFilter).InnerControl = multiValueFilter;
        }
        public override IDataGridFilter GetFilter()
        {
            var colorsFilter = new DataGridMultiValueFilter();

            colorsFilter.ItemTemplate = XamlReader.Parse(@"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:local=""clr-namespace:DataGridSamples;assembly=" + new AssemblyName(Assembly.GetExecutingAssembly().FullName).Name + @""" xmlns:c1=""http://schemas.componentone.com/winfx/2006/xaml"">
            <StackPanel Orientation=""Horizontal"">
                <StackPanel.Resources>
                    <local:ColorConverter x:Key=""colorConverter""/>
                </StackPanel.Resources>
                <c1:C1CheckeredBorder BorderThickness=""1"" BorderBrush=""Black"" Background=""{Binding Converter={StaticResource colorConverter}}"" Width=""12"" Height=""12"" VerticalAlignment=""Center""/>
                <TextBlock Text=""{Binding}"" VerticalAlignment=""Center"" Margin=""2 0 0 0 ""/>
            </StackPanel>
        </DataTemplate>") as DataTemplate;
            colorsFilter.SetBinding(DataGridMultiValueFilter.ItemsSourceProperty, new Binding("ItemsSource")
            {
                Source    = DataGrid,
                Converter = CustomConverter.Create((value, type, parameter, culture) =>
                {
                    if (value is IEnumerable)
                    {
                        var enumerable     = ((IEnumerable)value).Cast <object>();
                        var colorConverter = new ColorConverter();
                        return(enumerable.Select(o => C1DataGridFilterHelper.GetPropertyValue <object>(o, FilterMemberPath)).Distinct().Select(o => (Color)colorConverter.Convert(o, typeof(Color), null, CultureInfo.CurrentCulture)).OrderBy(c => new C1HslColor(c).Hue));
                    }
                    return(value);
                })
            });
            colorsFilter.SetBinding(DataGridMultiValueFilter.BackgroundProperty, new Binding("HeaderBackground")
            {
                Source = DataGrid
            });
            colorsFilter.SetBinding(DataGridMultiValueFilter.ForegroundProperty, new Binding("HeaderForeground")
            {
                Source = DataGrid
            });
            colorsFilter.SetBinding(DataGridMultiValueFilter.BorderBrushProperty, new Binding("BorderBrush")
            {
                Source = DataGrid
            });
            colorsFilter.SetBinding(DataGridMultiValueFilter.MouseOverBrushProperty, new Binding("MouseOverBrush")
            {
                Source = DataGrid
            });
            colorsFilter.SetBinding(DataGridMultiValueFilter.PressedBrushProperty, new Binding("PressedBrush")
            {
                Source = DataGrid
            });
            colorsFilter.SetBinding(DataGridMultiValueFilter.FocusBrushProperty, new Binding("SelectedBackground")
            {
                Source = DataGrid
            });
            colorsFilter.SetBinding(DataGridMultiValueFilter.InputBackgroundProperty, new Binding("RowBackground")
            {
                Source = DataGrid
            });
            colorsFilter.SetBinding(DataGridMultiValueFilter.InputForegroundProperty, new Binding("RowForeground")
            {
                Source = DataGrid
            });
            var filter = new DataGridContentFilter
            {
                Content = new DataGridFilterList
                {
                    Items = new List <IDataGridFilterUnity>
                    {
                        new DataGridTextFilter(),
                        colorsFilter,
                    }
                }
            };

            return(filter);
        }
Ejemplo n.º 3
0
 public override IDataGridFilter GetFilter()
 {
     var colorsFilter = new DataGridMultiValueFilter();
     colorsFilter.ItemTemplate = XamlReader.Parse(@"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:local=""clr-namespace:DataGridSamples;assembly=" + new AssemblyName(Assembly.GetExecutingAssembly().FullName).Name + @""" xmlns:c1=""http://schemas.componentone.com/winfx/2006/xaml"">
     <StackPanel Orientation=""Horizontal"">
         <StackPanel.Resources>
             <local:ColorConverter x:Key=""colorConverter""/>
         </StackPanel.Resources>
         <c1:C1CheckeredBorder BorderThickness=""1"" BorderBrush=""Black"" Background=""{Binding Converter={StaticResource colorConverter}}"" Width=""12"" Height=""12"" VerticalAlignment=""Center""/>
         <TextBlock Text=""{Binding}"" VerticalAlignment=""Center"" Margin=""2 0 0 0 ""/>
     </StackPanel>
     </DataTemplate>") as DataTemplate;
     colorsFilter.SetBinding(DataGridMultiValueFilter.ItemsSourceProperty, new Binding("ItemsSource")
     {
         Source = DataGrid,
         Converter = CustomConverter.Create((value, type, parameter, culture) =>
         {
             if (value is IEnumerable)
             {
                 var enumerable = ((IEnumerable)value).Cast<object>();
                 var colorConverter = new ColorConverter();
                 return enumerable.Select(o => C1DataGridFilterHelper.GetPropertyValue<object>(o, FilterMemberPath)).Distinct().Select(o => (Color)colorConverter.Convert(o, typeof(Color), null, CultureInfo.CurrentCulture)).OrderBy(c => new C1HslColor(c).Hue);
             }
             return value;
         })
     });
     colorsFilter.SetBinding(DataGridMultiValueFilter.BackgroundProperty, new Binding("HeaderBackground") { Source = DataGrid });
     colorsFilter.SetBinding(DataGridMultiValueFilter.ForegroundProperty, new Binding("HeaderForeground") { Source = DataGrid });
     colorsFilter.SetBinding(DataGridMultiValueFilter.BorderBrushProperty, new Binding("BorderBrush") { Source = DataGrid });
     colorsFilter.SetBinding(DataGridMultiValueFilter.MouseOverBrushProperty, new Binding("MouseOverBrush") { Source = DataGrid });
     colorsFilter.SetBinding(DataGridMultiValueFilter.PressedBrushProperty, new Binding("PressedBrush") { Source = DataGrid });
     colorsFilter.SetBinding(DataGridMultiValueFilter.FocusBrushProperty, new Binding("SelectedBackground") { Source = DataGrid });
     colorsFilter.SetBinding(DataGridMultiValueFilter.InputBackgroundProperty, new Binding("RowBackground") { Source = DataGrid });
     colorsFilter.SetBinding(DataGridMultiValueFilter.InputForegroundProperty, new Binding("RowForeground") { Source = DataGrid });
     var filter = new DataGridContentFilter
     {
         Content = new DataGridFilterList
         {
             Items = new List<IDataGridFilterUnity>
             {
                 new DataGridTextFilter(),
                 colorsFilter,
             }
         }
     };
     return filter;
 }