Добавление фильтра TextBox в ComboBox с использованием MVVM в WPF - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь создать ComboBox, где вверху есть текстовое поле, в которое я могу напечатать, чтобы отфильтровать элементы внутри ComboBox.Вот пример того, что я имею в виду:

enter image description here

Мне нужно сделать это, используя подход MVVM.Я не уверен, как это сделать или как переписать стиль, чтобы сделать это.Я искал в Google несколько решений, но ни одно из них не совсем то, что мне нужно.Я почти уверен, что после того, как у меня будет создан стиль, я смогу определить часть фильтрации в моей модели представления.

Любая помощь будет принята.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

В моих проектах, когда я делаю что-то подобное, я добавляю TextBox в качестве первого элемента в раскрывающемся шаблоне контента, после которого ведущий следует за элементами, которые должны быть связаны с данными.

 <ComboBox>
    <ComboBox.ItemTemplate>
      <DataTemplate>
        <StackPanel Orientation="Horizontal">
        <TextBox Text="{Binding Path=FilteredText"} Mode="TwoWay"/>
        <ListBox ItemSource="{Binding Path=ItemsForBinding}" Mode="TwoWay" NotifyOnSourceUpdated="True" />
        </StackPanel>
      </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

И в вашей модели представления убедитесь, что NotifyOnProperyChanged включен для свойства FilteredText, когда оно обновляется, оно вызывает «удаление» связанных элементов, я обычно использую ObservableCollection, но я знаю, что ListCollectionView имеет возможности дляфильтрует и уведомляет пользовательский интерфейс об изменении коллекции.Вы даже можете найти сторонний текст AutoCompleteBox (я использую Telerik,), и он позволит вам предварительно заполнить термины в «текстовом поле», которые вы хотите, чтобы пользователь мог фильтровать.

0 голосов
/ 10 октября 2018

Используйте IsTextSearchEnabled из ComboBox элемента управления следующим образом:

<ComboBox IsTextSearchEnabled="True" IsTextSearchCaseSensitive="True or False depending on your scenario" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...