2012-11-19 27 views
6

मैं (userID, नाम, शेष, इत्यादि) की एक सूची दिखाने के लिए एक डेटाग्रिड का उपयोग कर रहा हूं। इसके साथ एक बहुत ही अजीब मुद्दा है, कुछ पंक्तियों (बहुत बीस पंक्तियों में से एक) की शुरुआत में एक छोटी सी सफेद जगह होती है जिससे उस पंक्ति को गलत तरीके से गलत किया जा सकता है। सफेद स्थान एक छोटे आयत की तरह है जो पंक्ति के पहले सेल से ठीक पहले रखा जाता है। मैंने अपनी शैलियों और सबकुछ की समीक्षा की लेकिन यह पता नहीं लगा कि यह क्यों हो रहा है। ऐसा तब होता है जब स्क्रॉल करने के बाद सफेद स्पेस दिखाई देता है, जब मैं प्रोग्रामेटिक रूप से अपने डेटाग्रिड को स्क्रॉल करता हूं।WPF डेटाग्रिड पंक्ति क्षैतिज संरेखण समस्या

चीजों को और भी बदतर बना देता है कि सफेद स्थान आकार बदलने योग्य है! और जब मैं इसे अपने माउस के साथ आकार देता हूं तो यह ग्रिड को खराब कर देता है। मैं वास्तव में ऐसा कुछ नहीं भेजना चाहता हूं।

मुझे डब्ल्यूपीएफ में ज्यादा अनुभव नहीं है, अगर कोई मुझे कहां देखना है, तो मैं वास्तव में इसकी सराहना करता हूं। धन्यवाद।


संपादित करें: यहाँ स्क्रीनशॉट है:

enter image description here

+1

क्या आप एक स्क्रीनशॉट और कुछ कोड पोस्ट कर सकते हैं? डब्ल्यूपीएफ स्नूप जैसे टूल आपको यह जानने में मदद कर सकते हैं कि क्या हो रहा है। –

+0

ग्रेट टूल! अब मैं यह पता लगाने के लिए इसका उपयोग कर रहा हूं कि यह किस प्रकार की वस्तु है! – DeveloperInToronto

उत्तर

7

यह समस्या पंक्ति शीर्षलेखों को कुछ यादृच्छिक पंक्तियों के लिए "दिखाया गया" होने के कारण होती है।

मुझे नहीं पता कि ऐसा क्यों होता है, लेकिन सौभाग्य से यह तय सरल है।

यदि आप डेटाग्रिड पर RowHeaderWidth="0" सेट करते हैं, तो व्यवहार की अपेक्षा की जानी चाहिए।

किसी कारण से पंक्ति शीर्षलेख अभी भी एक उपस्थिति बना रहे हैं, भले ही HeadersVisibility कॉलम पर सेट हो।

+0

बहुत बहुत धन्यवाद पीटर! तुमने मुझे बचाया! मैंने सोचा कि मैंने कुछ गलत किया है और मैंने पिछले दो दिनों में एक्सएमएल और सी # कोड की प्रत्येक पंक्ति के माध्यम से जाने के लिए बिताया था। लेकिन मुझे कुछ भी नहीं मिला! इस तरह की एक अजीब बग! – DeveloperInToronto

+1

मेरे मामले में, यह व्यवहार IDataErrorInfo सत्यापन के कारण लाल विस्मयादिबोधक चिह्न (और केवल त्रुटियों वाली पंक्तियों पर) की अनुमति देने के लिए डिफ़ॉल्ट रोहेडर चौड़ाई को थोड़ा बढ़ा रहा था। अगर मैं 'RowHeaderWidth =" 11 "सेट करता हूं, तो यह स्थिर रहता है और समस्या गायब हो जाती है। – Heliac

0

मैं कई परियोजनाओं पर एक ही समस्या आ रही है, अब तक के रूप में मैं बता सकता हूँ, यह सिर्फ एक सादे OLE बग है। जो लंगड़ा है। मैंने पाया है कि एकमात्र काम लंगड़ा है। सुपर, सुपर लंग की तरह। काश मैं कुछ बेहतर था, लेकिन मैं नहीं करता। वैसे भी, मैंने पाया कि जब मैंने ग्रिड का आकार बदल दिया, तो ये अजीब स्क्रॉलिंग कलाकृतियों दूर चले जाएंगे, इसलिए मैंने लेआउट को अद्यतन करने के लिए इंजन को ट्रिगर करने के लिए कुछ कोड लिखा था।

Timer _timer; 

void MainWindow_Loaded(object sender, RoutedEventArgs e) 
{ 
    _timer = new Timer(1000); 
    _timer.Elapsed += _timer_Elapsed; 
    _timer.Start(); 
} 

void _timer_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    //why the hell are we doing this? 
    //well, the stupid error adorners on the grid like to be mis-aligned 
    //forcing a layout to happen makes them not look off. lame, I know. 
    Dispatcher.Invoke(new Action(() => 
    { 
     MainDataGrid.Margin = new Thickness(MainDataGrid.Margin.Left, MainDataGrid.Margin.Top, MainDataGrid.Margin.Right, MainDataGrid.Margin.Bottom + 1); 
     MainDataGrid.UpdateLayout(); 

     MainDataGrid.Margin = new Thickness(MainDataGrid.Margin.Left, MainDataGrid.Margin.Top, MainDataGrid.Margin.Right, MainDataGrid.Margin.Bottom - 1); 
     MainDataGrid.UpdateLayout(); 
    })); 


}