コード例 #1
0
        /// <summary>
        /// Updates a cascading list boxes visibility.
        /// </summary>
        /// <param name="item">The sliding list box.</param>
        internal void UpdateListVisibility(DependencyObject item)
        {
            ISplitItemsControl splitItemsControl = item as ISplitItemsControl;

            if (splitItemsControl != null && this.containersBySplitItemsControl.ContainsKey(splitItemsControl))
            {
                this.containersBySplitItemsControl[splitItemsControl].Visibility = CascadingListBoxGroup.GetListVisibility(item);
            }
        }
コード例 #2
0
        /// <summary>
        /// Override for clearing a container.
        /// </summary>
        /// <param name="element">The element dependency object.</param>
        /// <param name="item">The item object.</param>
        protected override void ClearContainerForItemOverride(DependencyObject element, object item)
        {
            base.ClearContainerForItemOverride(element, item);
            this.containersByItem.Remove(item);

            ISplitItemsControl splitItemsControl = item as ISplitItemsControl;

            if (splitItemsControl == null)
            {
                FrameworkElement frameworkElement = item as FrameworkElement;
                if (frameworkElement != null && !string.IsNullOrEmpty(CascadingListBoxGroup.GetCascadingListBoxName(frameworkElement)))
                {
                    splitItemsControl = frameworkElement.FindName(CascadingListBoxGroup.GetCascadingListBoxName(frameworkElement)) as ISplitItemsControl;
                }
            }

            if (splitItemsControl != null)
            {
                this.containersBySplitItemsControl.Remove(splitItemsControl);
            }
        }
コード例 #3
0
        /// <summary>
        /// Override for preparing the container.
        /// </summary>
        /// <param name="element">The element dependency object.</param>
        /// <param name="item">The item object.</param>
        protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            base.PrepareContainerForItemOverride(element, item);

            ContentPresenter container = element as ContentPresenter;

            this.containersByItem.Add(item, container);
            DependencyObject dependencyObject = item as DependencyObject;

            if (dependencyObject != null)
            {
                CascadingListBoxGroup.SetCascadingListBoxGroup(dependencyObject, this);
                LinkingWrapPanel.SetIsLinkedToNextChild(container, LinkingWrapPanel.GetIsLinkedToNextChild(dependencyObject));
                this.UpdateListVisibility(dependencyObject);
            }

#if SILVERLIGHT
            Canvas.SetZIndex(container, this.Items.Count - this.Items.IndexOf(item));
#endif
            ISplitItemsControl splitItemsControl = item as ISplitItemsControl;
            if (splitItemsControl == null)
            {
                FrameworkElement frameworkElement = item as FrameworkElement;

                if (frameworkElement != null && !string.IsNullOrEmpty(CascadingListBoxGroup.GetCascadingListBoxName(frameworkElement)))
                {
                    splitItemsControl = frameworkElement.FindName(CascadingListBoxGroup.GetCascadingListBoxName(frameworkElement)) as ISplitItemsControl;
                }
            }

            if (splitItemsControl != null)
            {
                CascadingListBoxGroup.SetCascadingListBoxGroup(splitItemsControl as DependencyObject, this);
                this.containersBySplitItemsControl.Add(splitItemsControl, container);
            }
        }
コード例 #4
0
        /// <summary>
        /// Updates the items source of a split items control.
        /// </summary>
        /// <param name="splitItemsControl">The split items control.</param>
        public static void UpdateItemsSource(ISplitItemsControl splitItemsControl)
        {            
#if !SILVERLIGHT
            if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(splitItemsControl as DependencyObject))
            {
                return;
            }   
#endif

            List<object> items = new List<object>();
            if (splitItemsControl.PrimaryItemsSource != null)
            {
                items.AddRange(IEnumerableHelper.GetItems(splitItemsControl.PrimaryItemsSource));
                if (items.Count > 0)
                {
                    for (int i = 0; i < items.Count; i++)
                    {
                        if (splitItemsControl.PrimaryItemsSourceHeader != null)
                        {
                            splitItemsControl.AddItemHeader(items[i], null);
                        }

                        if (splitItemsControl.AddShortcutKeysToPrimaryItems && i <= 10)
                        {
                            splitItemsControl.AddItemShortcutKey(items[i], ShortcutKeyHelper.GetKeyFromIndex(i));
                        }
                        else
                        {
                            splitItemsControl.RemoveItemShortcutKey(items[i], ShortcutKeyHelper.GetKeyFromIndex(i));
                        }

                        splitItemsControl.RemoveItemSplit(items[i]);
                    }

                    splitItemsControl.AddItemHeader(items[0], splitItemsControl.PrimaryItemsSourceHeader);
                }
            }

            if (splitItemsControl.SecondaryItemsSource != null)
            {
                if (items.Count > 0)
                {
                    splitItemsControl.AddItemSplit(items[items.Count - 1]);
                }

                int itemCount = items.Count;
                items.AddRange(IEnumerableHelper.GetItems(splitItemsControl.SecondaryItemsSource));

                if (splitItemsControl.SecondaryItemsSourceHeader != null && items.Count > itemCount)
                {
                    for (int i = itemCount; i < items.Count; i++)
                    {
                        splitItemsControl.AddItemHeader(items[i], null);
                        splitItemsControl.RemoveItemSplit(items[i]);
                    }

                    splitItemsControl.AddItemHeader(items[itemCount], splitItemsControl.SecondaryItemsSourceHeader);
                }
            }

            if (splitItemsControl.ShowCustomValueOption && splitItemsControl.CustomValueItem != null)
            {
                if (items.Count > 0)
                {
                    splitItemsControl.AddItemSplit(items[items.Count - 1]);
                }

                items.Add(splitItemsControl.CustomValueItem);
            }

            if (splitItemsControl.OtherItemsSource != null && splitItemsControl.ShowOtherItems)
            {
                if (items.Count > 0)
                {
                    splitItemsControl.AddItemSplit(items[items.Count - 1]);
                }

                int itemCount = items.Count;
                items.AddRange(IEnumerableHelper.GetItems(splitItemsControl.OtherItemsSource));
                if (splitItemsControl.OtherItemsSourceHeader != null && items.Count > itemCount)
                {
                    for (int i = itemCount; i < items.Count; i++)
                    {
                        splitItemsControl.AddItemHeader(items[i], null);
                        splitItemsControl.RemoveItemSplit(items[i]);
                    }

                    splitItemsControl.AddItemHeader(items[itemCount], splitItemsControl.OtherItemsSourceHeader);
                }
            }
            else if (splitItemsControl.ShowOtherOption)
            {
                if (items.Count > 0)
                {
                    splitItemsControl.AddItemSplit(items[items.Count - 1]);
                }

                items.Add(splitItemsControl.OtherItem);
            }

            splitItemsControl.ItemsSource = items;

#if !SILVERLIGHT
            if (splitItemsControl is SplitComboBox)
            {
                object selectedItem = null;
                foreach (object item in items)
                {
                    SplitComboBoxItem splitComboBoxItem = item as SplitComboBoxItem;
                    if (splitComboBoxItem != null && splitComboBoxItem.IsSelected)
                    {
                        selectedItem = item;
                        break;
                    }
                }

                if (selectedItem != null)
                {
                    splitItemsControl.SelectedItem = selectedItem;
                }
            }
#endif
        }
コード例 #5
0
        /// <summary>
        /// Updates the items source of a split items control.
        /// </summary>
        /// <param name="splitItemsControl">The split items control.</param>
        public static void UpdateItemsSource(ISplitItemsControl splitItemsControl)
        {
#if !SILVERLIGHT
            if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(splitItemsControl as DependencyObject))
            {
                return;
            }
#endif

            List <object> items = new List <object>();
            if (splitItemsControl.PrimaryItemsSource != null)
            {
                items.AddRange(IEnumerableHelper.GetItems(splitItemsControl.PrimaryItemsSource));
                if (items.Count > 0)
                {
                    for (int i = 0; i < items.Count; i++)
                    {
                        if (splitItemsControl.PrimaryItemsSourceHeader != null)
                        {
                            splitItemsControl.AddItemHeader(items[i], null);
                        }

                        if (splitItemsControl.AddShortcutKeysToPrimaryItems && i <= 10)
                        {
                            splitItemsControl.AddItemShortcutKey(items[i], ShortcutKeyHelper.GetKeyFromIndex(i));
                        }
                        else
                        {
                            splitItemsControl.RemoveItemShortcutKey(items[i], ShortcutKeyHelper.GetKeyFromIndex(i));
                        }

                        splitItemsControl.RemoveItemSplit(items[i]);
                    }

                    splitItemsControl.AddItemHeader(items[0], splitItemsControl.PrimaryItemsSourceHeader);
                }
            }

            if (splitItemsControl.SecondaryItemsSource != null)
            {
                if (items.Count > 0)
                {
                    splitItemsControl.AddItemSplit(items[items.Count - 1]);
                }

                int itemCount = items.Count;
                items.AddRange(IEnumerableHelper.GetItems(splitItemsControl.SecondaryItemsSource));

                if (splitItemsControl.SecondaryItemsSourceHeader != null && items.Count > itemCount)
                {
                    for (int i = itemCount; i < items.Count; i++)
                    {
                        splitItemsControl.AddItemHeader(items[i], null);
                        splitItemsControl.RemoveItemSplit(items[i]);
                    }

                    splitItemsControl.AddItemHeader(items[itemCount], splitItemsControl.SecondaryItemsSourceHeader);
                }
            }

            if (splitItemsControl.ShowCustomValueOption && splitItemsControl.CustomValueItem != null)
            {
                if (items.Count > 0)
                {
                    splitItemsControl.AddItemSplit(items[items.Count - 1]);
                }

                items.Add(splitItemsControl.CustomValueItem);
            }

            if (splitItemsControl.OtherItemsSource != null && splitItemsControl.ShowOtherItems)
            {
                if (items.Count > 0)
                {
                    splitItemsControl.AddItemSplit(items[items.Count - 1]);
                }

                int itemCount = items.Count;
                items.AddRange(IEnumerableHelper.GetItems(splitItemsControl.OtherItemsSource));
                if (splitItemsControl.OtherItemsSourceHeader != null && items.Count > itemCount)
                {
                    for (int i = itemCount; i < items.Count; i++)
                    {
                        splitItemsControl.AddItemHeader(items[i], null);
                        splitItemsControl.RemoveItemSplit(items[i]);
                    }

                    splitItemsControl.AddItemHeader(items[itemCount], splitItemsControl.OtherItemsSourceHeader);
                }
            }
            else if (splitItemsControl.ShowOtherOption)
            {
                if (items.Count > 0)
                {
                    splitItemsControl.AddItemSplit(items[items.Count - 1]);
                }

                items.Add(splitItemsControl.OtherItem);
            }

            splitItemsControl.ItemsSource = items;

#if !SILVERLIGHT
            if (splitItemsControl is SplitComboBox)
            {
                object selectedItem = null;
                foreach (object item in items)
                {
                    SplitComboBoxItem splitComboBoxItem = item as SplitComboBoxItem;
                    if (splitComboBoxItem != null && splitComboBoxItem.IsSelected)
                    {
                        selectedItem = item;
                        break;
                    }
                }

                if (selectedItem != null)
                {
                    splitItemsControl.SelectedItem = selectedItem;
                }
            }
#endif
        }