This other SO question डब्ल्यूपीएफ में एक स्वतः पूर्ण टेक्स्टबॉक्स के बारे में पूछता है। कई लोगों ने इनका निर्माण किया है, और वहां दिए गए उत्तरों में से एक this codeproject article सुझाता है।डब्ल्यूपीएफ: ऑटोकंपलेट टेक्स्टबॉक्स, ... फिर से
लेकिन मुझे कोई भी WPF स्वत: पूर्ण टेक्स्टबॉक्स नहीं मिला है जो WinForms स्वत: पूर्ण टेक्स्टबॉक्स से तुलना करता है। codeproject नमूना काम करता है, एक तरह से, ...
alt text http://i50.tinypic.com/sx2ej5.jpg
... लेकिन
- यह एक फिर से प्रयोग करने योग्य नियंत्रण या DLL के रूप में संरचित नहीं है। यह कोड है जो मुझे हर ऐप में एम्बेड करने की ज़रूरत है।
- यह केवल निर्देशिकाओं के साथ काम करता है। इसमें यह निर्धारित करने के लिए गुण नहीं हैं कि स्वत: पूर्ण स्रोत केवल फाइल सिस्टम निर्देशिका है, या फाइल सिस्टम फ़ाइलें, या .... आदि। मैं यह करने के लिए कोड लिख सकता हूं, लेकिन ... मैं पहले से लिखे गए किसी और के कोड का उपयोग करना चाहता हूं।
- इसमें पॉपअप आकार, आदि सेट करने के गुण नहीं हैं
- एक पॉपअप सूचीबॉक्स है जो सकारात्मक पूर्णता प्रस्तुत करता है। उस सूची के माध्यम से नेविगेट करते समय, टेक्स्टबॉक्स नहीं बदलता है। सूची बॉक्स में केंद्रित होने पर एक वर्ण टाइप करना टेक्स्टबॉक्स को अद्यतन करने का कारण नहीं बनता है।
- सूची बॉक्स से दूर ध्यान केंद्रित करने से पॉपअप सूची बॉक्स गायब नहीं होता है। यह भ्रामक है।
तो, मेरे सवाल:
* किसी को भी एक नि: शुल्क WPF स्वत: पूर्ण पाठ बॉक्स कि काम करता है, और एक गुणवत्ता यूआई अनुभव प्रदान करता है है *
उत्तर
?यहां बताया गया है कि मैंने यह कैसे किया:
.0। WPF Toolkit
प्राप्त करें .1। WPF टूलकिट
के लिए एमएसआई चलाएं .2। विजुअल स्टूडियो के भीतर, यूआई डिज़ाइनर में टूलबॉक्स से खींचें/छोड़ें - विशेष रूप से डेटा विज़ुअलाइज़ेशन समूह -। यह वी.एस. पिटारे में इस तरह दिखता है:
alt text http://i49.tinypic.com/s12q6x.jpg
आप डिजाइनर, हाथ से शिल्प XAML का उपयोग नहीं करना चाहते हैं। यह इस तरह दिखता है:
<toolkit:AutoCompleteBox
ToolTip="Enter the path of an assembly."
x:Name="tbAssembly" Height="27" Width="102"
Populating="tbAssembly_Populating" />
... जहां टूलकिट नाम स्थान इस तरह से मैप किया गया है:
xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
.3। Populating
ईवेंट के लिए कोड प्रदान करें।यहाँ मैं क्या इस्तेमाल किया है:
private void tbAssembly_Populating(object sender, System.Windows.Controls.PopulatingEventArgs e)
{
string text = tbAssembly.Text;
string dirname = Path.GetDirectoryName(text);
if (Directory.Exists(Path.GetDirectoryName(dirname)))
{
string[] files = Directory.GetFiles(dirname, "*.*", SearchOption.TopDirectoryOnly);
string[] dirs = Directory.GetDirectories(dirname, "*.*", SearchOption.TopDirectoryOnly);
var candidates = new List<string>();
Array.ForEach(new String[][] { files, dirs }, (x) =>
Array.ForEach(x, (y) =>
{
if (y.StartsWith(dirname, StringComparison.CurrentCultureIgnoreCase))
candidates.Add(y);
}));
tbAssembly.ItemsSource = candidates;
tbAssembly.PopulateComplete();
}
}
यह काम करता है, अभी जिस तरह तुम उम्मीद थी। यह पेशेवर लगता है। कि codeproject नियंत्रण प्रदर्शन विसंगतियों से कोई भी कर रहे हैं। यह हैं कि यह दिखता है:
alt text http://i50.tinypic.com/24qsopy.jpg
WPF टूलकिट को Thanks to Matt for the pointer।
, पेचीदा ध्वनि मैट। क्या AutoCompleteBox का उपयोग करने पर कोई मार्गदर्शिका या उदाहरण है? मुझे डीएलएल मिला जिसमें यह शामिल है। एक्सएएमएल में मैं किस एक्सएमएलएन का उपयोग करता हूं? मैं वास्तव में इसका उपयोग कैसे करूं? – Cheeso
ध्यान दें कि ब्लॉग पोस्ट लिंक मैंने अभी सिल्वरलाइट के बारे में वार्ताएं जोड़ दी हैं, लेकिन ऑटोकंपलेटबॉक्स भी डब्ल्यूपीएफ के लिए है। –
कोडप्लेक्स पर डब्ल्यूपीएफ टूलकिट मर चुका है, लेकिन गिटहब पर कई फोर्क हैं, अगर किसी को इसकी आवश्यकता है: [jogibear9988/wpftoolkit] (https://github.com/jogibear9988/wpftoolkit), [WPFToolkit.DataVisualization] (https://github.com/davidalpert/WPFToolkit.DataVisualization), [theonlylawislove/WPFToolkit] (https://github.com/theonlylawislove/WPFToolkit), [jrwren/wpftoolkit] (https://github.com/jrwren/wpftoolkit)। – Athari