// 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); }
// 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); }