WPF: ListBox a vyhledávání pomocí klávesnice
Funkce inkrementálního vyhledávání v ListBoxu je velmi užitečná věc. Ani jsem si nevšiml, že ji používám tak často, dokud jsem nezjistil, že ve WPF je tato vlastnost vypnuta (by default). Vyhledávání zapíná vlastnost IsTextSearchEnabled, kterou implementuje ItemsControl (vyhledávání tedy funguje v ListBoxu, ComboBoxu a dalších ovládacích prvcích založených na položkách).
Jak ale docílit toho, abychom mohli vyhledávat v položkách, které jsou např. business třídy – tedy ne ListBoxItem? Návrháři WPF mysleli i na tento problém – stáčí použít TextSearch.TextPath vlastnost, která určí cestu pro inkrementální vyhledávání pomocí klávesnice. Asi nejlepší bude názorný příklad:
Mějme jednoduchou business třídu:
class SimpleClass
{
public Firstname {get;set;}
public Lastname {get;set;}
}
A chtěli bychom inkrementálně vyhledávat podle příjmení:
<ListBox IsTextSearchEnabled="True" TextSearch.TextPath="Lastname">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Firstname}" />
<TextBlock Text="{Binding Lastname}" Margin="10,0,0,0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Snad tento jednoduchý příklad stačí i jako závěr. :)
Upozornění na nové komentáře
Pokud chčeš dostávat upozornění emailem na změny u toho příspěvku,tak se zaregistruj zde.zde
Odebírat komentáře k tomuto příspěvku pomocí