コード例 #1
0
        protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            RemovableItemContentControl control = element as RemovableItemContentControl;

            control.ContentTemplate = ItemTemplate;
            control.Content         = item;
            itemsSourceHelper.RegisterItemContainerPair(item, element as FrameworkElement);
            int itemIndex = itemsSourceHelper.ItemIndex(item);

            if (itemIndex == 0)
            {
                if (itemsSourceHelper.ItemsCount() > 1)
                {
                    control.Margin = ItemsControlHelper.GetFirstItemMargin(this);
                }
                else
                {
                    control.Margin = ItemsControlHelper.GetLastItemMargin(this);
                }
            }
            else if (itemsSourceHelper.HasItems() && itemIndex + 1 < itemsSourceHelper.ItemsCount())
            {
                control.Margin = ItemsControlHelper.GetRegularItemMargin(this);
            }
            else
            {
                control.Margin = ItemsControlHelper.GetLastItemMargin(this);
            }
            if (itemsSourceHelper.GetPreviousContainer(item) is RemovableItemContentControl previous)
            {
                previous.Margin = ItemsControlHelper.GetRegularItemMargin(this);
            }
            base.PrepareContainerForItemOverride(element, item);
        }
コード例 #2
0
        protected override void ClearContainerForItemOverride(DependencyObject element, object item)
        {
            FrameworkElement previousContainer = itemsSourceHelper.GetPreviousContainer(item);
            FrameworkElement nextContainer     = itemsSourceHelper.GetNextContainer(item);

            if (previousContainer != null)
            {
                if (nextContainer == null)
                {
                    previousContainer.Margin = ItemsControlHelper.GetLastItemMargin(this);
                }
                else
                {
                    previousContainer.Margin = ItemsControlHelper.GetRegularItemMargin(this);
                }
            }
            itemsSourceHelper.UnregisterItemContainerPair(item);
            base.ClearContainerForItemOverride(element, item);
        }