नहीं, यह पृष्ठभूमि धागे का उपयोग नहीं करता है। आप स्रोत को WPF Tookit में पढ़ सकते हैं। हालांकि, यह आपको पृष्ठभूमि थ्रेड पर स्वयं करने की अनुमति देने के लिए पर्याप्त लचीला है।
आप इस दृष्टिकोण का उपयोग कर सकते हैं:
- संभाल
Populating
घटना: इसे रद्द, और SearchText
- का उपयोग करते समय पृष्ठभूमि कार्यकर्ता पूरा हो गया है अपनी पृष्ठभूमि कार्यकर्ता शुरू:
ItemsSource
सेट और फोन PopulateComplete
एमएसडीएन दस्तावेज में इसका एक पूरा उदाहरण है:
उदाहरण स्वत: पूर्ण डेटा को भरने के लिए एक अतुल्यकालिक वेब सेवा का उपयोग करता है, लेकिन एक ही विचार एक बहुत बड़ी डाटासेट खोज के लिए लागू होता है। पृष्ठभूमि धागा
अद्यतन:
यहाँ एक पृष्ठभूमि धागे पर खोज होने वाली के साथ एक पूर्ण उदाहरण है। इसमें लंबी खोज को अनुकरण करने के लिए एक-दूसरी नींद शामिल है:
private class PopulateInfo
{
public AutoCompleteBox AutoCompleteBox { get; set; }
public string SearchText { get; set; }
public IEnumerable<string> Results { get; set; }
}
private void AutoCompleteBox_Populating(object sender, PopulatingEventArgs e)
{
var populateInfo = new PopulateInfo
{
AutoCompleteBox = sender as AutoCompleteBox,
SearchText = (sender as AutoCompleteBox).SearchText,
};
e.Cancel = true;
var ui = TaskScheduler.FromCurrentSynchronizationContext();
var populate = Task.Factory.StartNew<PopulateInfo>(() => Populate(populateInfo));
populate.ContinueWith(task => OnPopulateComplete(task.Result), ui);
}
private PopulateInfo Populate(PopulateInfo populateInfo)
{
var candidates = new string[] {
"Abc",
"Def",
"Ghi",
};
populateInfo.Results = candidates
.Where(candidate => candidate.StartsWith(populateInfo.SearchText, StringComparison.InvariantCultureIgnoreCase))
.ToList();
Thread.Sleep(1000);
return populateInfo;
}
private void OnPopulateComplete(PopulateInfo populateInfo)
{
if (populateInfo.SearchText == populateInfo.AutoCompleteBox.SearchText)
{
populateInfo.AutoCompleteBox.ItemsSource = populateInfo.Results;
populateInfo.AutoCompleteBox.PopulateComplete();
}
}
स्रोत
2010-12-31 07:08:07
धन्यवाद लेकिन किसी भी तरह से यह मेरे लिए काम नहीं करता है। उन्होंने पूरे आइटम स्रोत को क्यों अपडेट किया और न केवल ड्रॉप-डाउन सूची? – Erez
यदि आप पॉप्युलेटिंग ईवेंट को स्वयं संभालते हैं तो आपको केवल उन आइटम्ससोर्स को सेट करने की आवश्यकता है जो मेल खाते हैं। –
ग्रेट सॉल्यूशन! –