コード例 #1
0
        // Token: 0x060057FD RID: 22525 RVA: 0x00186038 File Offset: 0x00184238
        internal static string GetPrimaryTextFromItem(ItemsControl itemsControl, object item)
        {
            if (item == null)
            {
                return(string.Empty);
            }
            BindingExpression bindingExpression = TextSearch.CreateBindingExpression(itemsControl, item, TextSearch.GetPrimaryTextPath(itemsControl));

            TextSearch.TextValueBindingExpression.SetValue(itemsControl, bindingExpression);
            string primaryText = TextSearch.GetPrimaryText(item, bindingExpression, itemsControl);

            TextSearch.TextValueBindingExpression.ClearValue(itemsControl);
            return(primaryText);
        }
コード例 #2
0
        // Token: 0x060057F6 RID: 22518 RVA: 0x00185D48 File Offset: 0x00183F48
        private static int FindMatchingPrefix(ItemsControl itemsControl, string primaryTextPath, string prefix, string newChar, int startItemIndex, bool lookForFallbackMatchToo, ref bool wasNewCharUsed)
        {
            ItemCollection items = itemsControl.Items;
            int            num   = -1;
            int            num2  = -1;
            int            count = items.Count;

            if (count == 0)
            {
                return(-1);
            }
            string value = prefix + newChar;

            if (string.IsNullOrEmpty(value))
            {
                return(-1);
            }
            BindingExpression bindingExpression = null;
            object            item = itemsControl.Items[0];

            if (SystemXmlHelper.IsXmlNode(item) || !string.IsNullOrEmpty(primaryTextPath))
            {
                bindingExpression = TextSearch.CreateBindingExpression(itemsControl, item, primaryTextPath);
                TextSearch.TextValueBindingExpression.SetValue(itemsControl, bindingExpression);
            }
            bool flag = true;

            wasNewCharUsed = false;
            CultureInfo culture = TextSearch.GetCulture(itemsControl);
            int         i       = startItemIndex;

            while (i < count)
            {
                object obj = items[i];
                if (obj != null)
                {
                    string primaryText = TextSearch.GetPrimaryText(obj, bindingExpression, itemsControl);
                    bool   isTextSearchCaseSensitive = itemsControl.IsTextSearchCaseSensitive;
                    if (primaryText != null && primaryText.StartsWith(value, !isTextSearchCaseSensitive, culture))
                    {
                        wasNewCharUsed = true;
                        num            = i;
                        break;
                    }
                    if (lookForFallbackMatchToo)
                    {
                        if (!flag && prefix != string.Empty)
                        {
                            if (primaryText != null && num2 == -1 && primaryText.StartsWith(prefix, !isTextSearchCaseSensitive, culture))
                            {
                                num2 = i;
                            }
                        }
                        else
                        {
                            flag = false;
                        }
                    }
                }
                i++;
                if (i >= count)
                {
                    i = 0;
                }
                if (i == startItemIndex)
                {
                    break;
                }
            }
            if (bindingExpression != null)
            {
                TextSearch.TextValueBindingExpression.ClearValue(itemsControl);
            }
            if (num == -1 && num2 != -1)
            {
                num = num2;
            }
            return(num);
        }