public override DataTemplate SelectTemplate(object item, System.Windows.DependencyObject container) { FrameworkElement element = container as FrameworkElement; GroupData data = element.DataContext as GroupData; PropertyGroupDescriptionBase pgd = data.GroupDescription as PropertyGroupDescriptionBase; if (pgd != null && pgd.PropertyName == "Product") { return(this.ProductTemplate); } return(base.SelectTemplate(item, container)); }
internal DataGroup FindItemParentGroup(object item) { if (!this.IsDataReady || item == null) { return(null); } // no groups, item is expanded if (this.groupDescriptors.Count == 0) { return(null); } // coordinate is struct so it cannot be empty. var coordinate = this.CurrentDataProvider.Results.Root; var rootGroup = coordinate.RowGroup as Group; if (rootGroup == null) { return(null); } var currentGroup = rootGroup; for (int i = 0; i < this.groupDescriptors.Count; i++) { object groupKey = this.CurrentDataProvider.DataView.GetGroupKey(item, i); if (groupKey == null) { PropertyGroupDescriptionBase propertyGroupDescriptor = this.groupDescriptors[i].EngineDescription as PropertyGroupDescriptionBase; groupKey = propertyGroupDescriptor.GroupNameFromItem(item, i); } Group subGroup; if (currentGroup.TryGetGroup(groupKey, out subGroup)) { currentGroup = subGroup; } if (subGroup == null) { Debug.Assert(RadControl.IsInTestMode, "No group for item?"); return(null); } } return(currentGroup as DataGroup); }
internal static void SetPropertiesToCopySource(PropertyGroupDescriptionBase source) { source.CustomName = "CustomName"; IGroupDescription igd = source as IGroupDescription; igd.GroupComparer = new GrandTotalComparer() { AggregateIndex = 1 }; //IntervalCondition condition = new IntervalCondition() { From = 100, To = 200, Condition = IntervalComparison.IsBetween }; //ValueGroupFilter groupFilter = new ValueGroupFilter() { Condition = condition, AggregateIndex = 1 }; //source.GroupFilter = groupFilter; source.MemberAccess = new DelegateMemberAccess <ValuesItem>((i) => i.DoubleProperty); source.PropertyName = "DoubleProperty"; source.ShowGroupsWithNoData = true; source.SortOrder = SortOrder.Descending; }
internal static void AssertPropertiesAreCloned(PropertyGroupDescriptionBase source, PropertyGroupDescriptionBase clone) { // CustomName Assert.AreEqual("CustomName", clone.CustomName); IGroupDescription igd = source as IGroupDescription; IGroupDescription igdClone = clone as IGroupDescription; // GroupComparer Assert.AreNotSame(igd.GroupComparer, igdClone.GroupComparer); Assert.IsInstanceOfType(igdClone.GroupComparer, typeof(GrandTotalComparer)); GrandTotalComparer comparerClone = (GrandTotalComparer)igdClone.GroupComparer; Assert.AreEqual(1, comparerClone.AggregateIndex); // GroupFilter //Assert.AreNotSame(source.GroupFilter, clone.GroupFilter); //Assert.IsInstanceOfType(clone.GroupFilter, typeof(ValueGroupFilter)); //// GroupFilter.Condition //ValueGroupFilter groupFilterClone = (ValueGroupFilter)clone.GroupFilter; //Assert.AreNotSame(groupFilterClone.Condition, ((ValueGroupFilter)source.GroupFilter).Condition); //Assert.IsInstanceOfType(groupFilterClone.Condition, typeof(IntervalCondition)); //IntervalCondition conditionClone = (IntervalCondition)groupFilterClone.Condition; //Assert.AreEqual(100, conditionClone.From); //Assert.AreEqual(200, conditionClone.To); //Assert.AreEqual(IntervalComparison.IsBetween, conditionClone.Condition); //Assert.AreEqual(1, groupFilterClone.AggregateIndex); // MemberAccess Assert.AreSame(source.MemberAccess, clone.MemberAccess); // PropertyName Assert.AreEqual("DoubleProperty", clone.PropertyName); // ShowGroupsWithNoData Assert.AreEqual(true, clone.ShowGroupsWithNoData); // SortOrder Assert.AreEqual(SortOrder.Descending, clone.SortOrder); }