XAML에서
는 "TextContainSearch.Text을"콤보 상자에 하나 개의 속성을 추가해야합니다 파일 "에서 TextSearch"와 같은이 샘플보기 :
<ComboBox ItemsSource="{Binding Model.formListIntDeviceNumbers}" SelectedItem="{Binding Path=Model.selectedDeviceNumber, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="DeviceNumber" IsEditable="True" c:TextContainSearch.Text="DeviceNumber">
그리고 우리 XAML 파일의 헤더에 다음을 사용하여 추가해야합니다.
,210
xmlns:c="clr-namespace:Adaptive.Controls.Extension"
그리고 * .cs 파일에서 C# 코드 :
using System;
using System.Windows;
using System.Windows.Controls;
namespace Adaptive.Controls.Extension
{
public sealed class TextContainSearch : DependencyObject {
public static void SetText(DependencyObject element, string text) {
var controlSearch = element as Control;
if (controlSearch != null)
controlSearch.KeyUp += (sender, e) =>
{
if (sender is ComboBox){
var control = sender as ComboBox;
control.IsDropDownOpen = true;
var oldText = control.Text;
foreach(var itemFromSource in control.ItemsSource){
if (itemFromSource != null)
{
Object simpleType = itemFromSource.GetType().GetProperty(text).GetValue(itemFromSource, null);
String propertOfList = simpleType as string;
if (!string.IsNullOrEmpty(propertOfList) && propertOfList.Contains(control.Text))
{
control.SelectedItem = itemFromSource;
control.Items.MoveCurrentTo(itemFromSource);
break;
}
}
}
control.Text = oldText;
TextBox txt = control.Template.FindName("PART_EditableTextBox", control) as TextBox;
if (txt != null)
{
txt.Select(txt.Text.Length, 0);
}
}
};
}
}
}
지금까지 내가이 작업을 수행 할 수있는 유일한 방법은 콤보를 확장 컨트롤을 만들고 당신이 필요로하는 기능을 추가하는 것입니다 알고. –