Esempio n. 1
0
    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));
    }
Esempio n. 2
0
        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);
        }