or
Hi, I use the following code to overwrite the FilteringControl
public class ContainsFilteringControl: FilteringControl
{
public override void Prepare(GridViewColumn gridViewColumn)
{
base.Prepare(gridViewColumn);
var vm = DataContext as FilteringViewModel;
if (vm == null) return;
if (!vm.Filter1.IsActive)
{
vm.Filter1.Operator = FilterOperator.Contains;
}
if (!vm.Filter2.IsActive)
{
vm.Filter2.Operator = FilterOperator.Contains;
}
}
}
public MyWindow(MyViewModel viewModel)
{
DataContext = viewModel;
this.radGrid.Columns[2].FilteringControl = new ContainsFilteringControl();
}
public static class CollectionSorter |
{ |
public static void Sort<T>(this ObservableCollection<T> collection, Comparison<T> comparison) |
{ |
var comparer = new Comparer<T>(comparison); |
List<T> sorted = collection.OrderBy(x => x, comparer).ToList(); |
for (int i = 0; i < sorted.Count(); i++) |
collection.Move(collection.IndexOf(sorted[i]), i); |
} |
public static void DescendingSort<T>(this ObservableCollection<T> collection, Comparison<T> comparison) |
{ |
var comparer = new ReverseComparer<T>(comparison); |
List<T> sorted = collection.OrderBy(x => x, comparer).ToList(); |
for (int i = 0; i < sorted.Count(); i++) |
collection.Move(collection.IndexOf(sorted[i]), i); |
} |
} |
internal class Comparer<T> : IComparer<T> |
{ |
private readonly Comparison<T> comparison; |
public Comparer(Comparison<T> comparison) |
{ |
this.comparison = comparison; |
} |
#region IComparer<T> Members |
public int Compare(T x, T y) |
{ |
return comparison.Invoke(x, y); |
} |
#endregion |
} |
internal class ReverseComparer<T> : IComparer<T> |
{ |
private readonly Comparison<T> comparison; |
public ReverseComparer(Comparison<T> comparison) |
{ |
this.comparison = comparison; |
} |
#region IComparer<T> Members |
public int Compare(T x, T y) |
{ |
return -comparison.Invoke(x, y); |
} |
#endregion |
} |
private void Log(LogEntry log) |
{ |
LoggedEvents.Add(log); |
LoggedEvents.DescendingSort((x, y) => x.TimeStampString.CompareTo(y.TimeStampString)); |
} |
private ObservableCollection<LogEntry> entries = new ObservableCollection<LogEntry>(); |
public ObservableCollection<LogEntry> LoggedEvents |
{ |
get |
{ |
return entries; |
} |
set |
{ |
entries = value; |
RaisePropertyChanged(LoggedProperty); |
} |
} |
<
telerik:RadDocking
Background
=
"#edf3fa"
x:Name
=
"dmManager"
Grid.Row
=
"1"
Margin
=
"0,0,0,33"
Padding
=
"0,0,0,0"
>
<
telerik:RadDocking.DocumentHost
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
(Assume controls)
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking.DocumentHost
>
<
telerik:RadSplitContainer
InitialPosition
=
"DockedLeft"
>
<
telerik:RadPaneGroup
>
(Assume controls)
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
InitialPosition
=
"DockedRight"
>
<
telerik:RadPaneGroup
>
(Assume controls)
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
x:Name
=
"Bottom"
InitialPosition
=
"DockedBottom"
>
<
telerik:RadPaneGroup
>
(Assume controls)
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
<
chartView:LineSeries
x:Name
=
"Item1"
ItemsSource
=
"{Binding Item[0]}"
ValueBinding
=
"Value"
CategoryBinding
=
"Counter"
/>
<
chartView:LineSeries
x:Name
=
"Item2"
ItemsSource
=
"{Binding Item[1]}"
ValueBinding
=
"Value"
CategoryBinding
=
"Counter"
/>
<
chartView:LineSeries
x:Name
=
"Item3"
ItemsSource
=
"{Binding Item[2]}"
ValueBinding
=
"Value"
CategoryBinding
=
"Counter"
/>
<
chartView:LineSeries
x:Name
=
"Item4"
ItemsSource
=
"{Binding Item[3]}"
ValueBinding
=
"Value"
CategoryBinding
=
"Counter"
/>
<
chartView:LineSeries
x:Name
=
"Item5"
ItemsSource
=
"{Binding Item[4]}"
ValueBinding
=
"Value"
CategoryBinding
=
"Counter"
/>
public ObservableCollection<
IEnumerable
<GraphPlot>> Item
{
get { return m_item; }
set
{
m_item = value;
OnPropertyChanged("Item");
}
}