A separate search application is implemented very quickly. But only two libraries from the Windows API code packs are required:
Code:
private void start search (search string text)
{
/ / Create search terms
search search condition condition =
GetSearchCondition (search text);
/ / Date as a further refine by
search condition condition = date
SearchConditionFactory.CreateLeafCondition (
SystemProperties.System.Title,
search text,
SearchConditionOperation.ValueContains);
/ / Content of the search conditions
search condition final search condition =
SearchConditionFactory.CreateAndOrCondition (
SearchConditionType.Or,
false
search condition,
date condition);
/ / Create a shell SearchFolder
shell SearchFolder SearchFolder;
if (ShellLibrary.IsPlatformSupported)
{
SearchFolder shell = new search folder (
final search condition,
(Shell container) KnownFolders.DocumentsLibrary,
(Shell container) KnownFolders.PicturesLibrary,
(Shell container) KnownFolders.VideosLibrary);
}
else
{
SearchFolder shell = new search folder (
final search condition,
(Shell container) KnownFolders.Documents,
(Shell container) KnownFolders.Pictures,
(Shell container) KnownFolders.Videos);
}
/ / Data list the results indicate
_result.ItemsSource = search folder;
}
The method GetSearchCondition is implemented as follows:
private search condition GetSearchCondition (string text search)
{
/ / Search terms from the text form
string [] words = searchText.Split ('');
/ / The first search result is empty
search condition combinedPropertyCondition = null;
/ / Each word in the search text a search condition for generating
foreach (string word in words)
{
/ / First search condition -> Search by file name
search condition propertyCondition1 =
SearchConditionFactory.CreateLeafCondition (
SystemProperties.System.FileName,
word,
SearchConditionOperation.ValueContains);
/ / Second condition search -> search for keywords / tags in file
search condition propertyCondition2 =
SearchConditionFactory.CreateLeafCondition (
SystemProperties.System.Keywords,
word,
SearchConditionOperation.ValueContains);
/ / We want an OR condition for tags or file name
search condition tmpCombinedCondition =
SearchConditionFactory.CreateAndOrCondition (
SearchConditionType.Or,
false
propertyCondition1,
propertyCondition2);
/ If there already is a search condition,
/ / Linking the new and old that AND
if (combinedPropertyCondition! = null)
{
combinedPropertyCondition =
SearchConditionFactory.CreateAndOrCondition (
SearchConditionType.And,
false
combinedPropertyCondition,
tmpCombinedCondition);
}
else
{
combinedPropertyCondition = tmpCombinedCondition;
}
}
combinedPropertyCondition return;
}
The search itself is run from the shell class search folder. The definition of the search via the search conditions. Which folders to be searched is defined by using "know folders", so-called known folders.
SearchFolder shell = new search folder (
final search condition,
(Shell container) KnownFolders.DocumentsLibrary,
(Shell container) KnownFolders.PicturesLibrary,
(Shell container) KnownFolders.VideosLibrary);
The result can now visualize how you want. I have confined myself in this example is a simple list. In the Windows API code to pack is a full-fledged WPF visualization.
Bookmarks