के बिना विस्तारित नोड्स को याद रखें, मैं वर्तमान में अपने पूर्ववर्ती के उपकरण को अपग्रेड कर रहा हूं और मैं TreeView
समस्या पर फंस गया हूं। उनके सॉफ़्टवेयर ने एक बार डेटा का विश्लेषण किया और परिणामों को TreeView
में प्रदर्शित किया। मैंने रीयल-टाइम डेटा का विश्लेषण करने के लिए टूल को बदल दिया और इसलिए उपयोगकर्ता को वास्तविक समय के परिणाम मिलते हैं। अब, जब मैं उपयोगकर्ता को विस्तार के बाद भी विस्तारित करता हूं तो पेड़ दृश्य नोड्स को विस्तारित करना चाहूंगा। मुझे पता है कि इस विषय पर कई बार चर्चा की गई है और मैंने जवाब पढ़ने में घंटों बिताए लेकिन मुझे अपनी समस्या का कोई समाधान नहीं मिला।एक WPF TreeView बनाएं, रीफ्रेश करें और XAML
बुनियादी समस्या है: कोई स्थिर पेड़ किसी भी अधिक और वर्तमान में पेड़ सिर्फ फिर से बनाई गई है हर बार होती है। मुझे डेटा बाध्यकारी या एक्सएएमएल के बारे में कोई जानकारी नहीं है और एक्सएएमएल में प्रोग्रामिंग सीखने के लिए कुछ समय है। नीचे आप कोड को देख सकते हैं जैसे कि यह मेरे पूर्ववर्ती द्वारा बनाया गया था। मैंने अभी तक कुछ भी नहीं बदला है, मुझे बस हर 2-5 सेकंड में इस विधि को याद है।
क्या विस्तारित नोड्स (ग्लोबल?) के बारे में जानकारी संग्रहीत करने के लिए कोई (आसान?) तरीका है और रीफ्रेश के बाद इसे फिर से विस्तारित करें या क्या मुझे वास्तव में WPF की गहरी समझ प्राप्त करने की आवश्यकता है?
foreach (Analyzer.ALARM_GROUP alarmGroup in alarmGroupList)
{
//Display Problem Group
TreeViewItem groupItem = new TreeViewItem();
List<String> ListAreas = new List<string>();
string areas = "";
//GROUP HEADER
//display alarm group which contains more than one alarm
if (alarmGroup.AlarmList.Count > 1)
{
groupItem.Header = Convert.ToString(alarmGroup.AlarmList.Count) + " --- " + alarmGroup.AlarmList[0].EventTime + " " + alarmGroup.AlarmList[0].AlarmText + "\n "
+ alarmGroup.AlarmList[alarmGroup.AlarmList.Count - 1].EventTime + " " + alarmGroup.AlarmList[alarmGroup.AlarmList.Count - 1].AlarmText
+ " --- " + " AREAS: " + areas;
}
else //display alarm group with only one alarm message
{
groupItem.Header = Convert.ToString(alarmGroup.AlarmList.Count) + " --- " + alarmGroup.AlarmList[0].EventTime + " " + alarmGroup.AlarmList[0].AlarmText + " --- " + " AREA: " + areas;
}
//HEADLINE of single Alarm Item
TreeViewItem alarmItem = new TreeViewItem();
alarmItem.Header = "[EVENTTIME] [ALARMTAG] --- [OPCCONDITION] --- [SEVERITY] --- [AREA] --- [ALARMTEXT]";
alarmItem.FontWeight = FontWeights.SemiBold;
groupItem.Items.Add(alarmItem);
//Display single alarm messages
foreach (var alarm in alarmGroup.AlarmList)
{
alarmItem = new TreeViewItem();
alarmItem.Header = alarm.EventTime + " --- " + alarm.AlarmTag + " --- " + alarm.Condition + " --- " + alarm.Severity + " --- " + alarm.Area + " --- " + alarm.AlarmText;
alarmItem.FontWeight = FontWeights.Normal;
groupItem.Items.Add(alarmItem);
}
AlarmPresentationBox.Items.Add(groupItem);
आपको बहुत बहुत धन्यवाद।मैंने पूरी ट्री को हुक करके और नोड्स और इसकी स्थिति को एक शब्दकोश में संग्रहीत करके एक अलग दृष्टिकोण की कोशिश की लेकिन यह काम नहीं किया। आपका दृष्टिकोण बेहतर लगता है। मैं बस इसे लागू कर रहा हूँ। – Larimow
आपको और भी धन्यवाद। यह पूरी तरह से काम करता है। मैं 3 दिन पहले इस प्रश्न पूछा जाना चाहिए था ... WPF के बारे में: इस समय से निपटने के लिए दो कई अन्य समस्याएं हैं। जब मैंने इन समस्याओं को हल किया तो मैं "हाथों को गंदे" कर सकता हूं। अभी के लिए मैं XAML – Larimow
अच्छा समाधान से बचने की कोशिश करता हूं। लेकिन मैं इसके बजाय GetHashCode का बेहतर उपयोग करूंगा। हेडर स्ट्रिंग बहुत ही अद्वितीय आईडी नहीं है। – shj