2010-01-30 14 views
7

क्या सिल्वरलाइट DataGrid में किसी विशेष पंक्ति (ऑब्जेक्ट पहचान द्वारा) स्क्रॉल करना संभव है जिसमें ItemsSource है जो PagedCollectionView है।क्या आप सिल्वरलाइट डेटाग्रिड में एक PagedCollectionView के साथ ScrollIntoView() का उपयोग कर सकते हैं?

मैं दिन/स्थिति आदि द्वारा समूहीकृत आदेशों की एक सूची लोड कर रहा हूं। मुझे किसी विशेष आदेश पर स्क्रॉल करने में सक्षम होना चाहिए।

var pcv = new PagedCollectionView(e.Result.Orders); 
gridOrders.ItemsSource = pcv; 

दुर्भाग्य से, ScrollIntoView(order)PagedCollectionView की वजह से काम नहीं करता।

An article on DataGrid from MSDN दिखाता है कि PagedCollectionView में किसी समूह को स्क्रॉल करना संभव है, लेकिन यह वास्तव में बहुत अधिक उपयोग नहीं है।

foreach (CollectionViewGroup group in pcv.Groups) 
    { 
     dataGrid1.ScrollIntoView(group, null); 
     dataGrid1.CollapseRowGroup(group, true); 
    } 

क्या ऐसा करने का कोई तरीका है?

उत्तर

7

हां, आइटम स्रोत PagedCollectionView पर आइटम को स्क्रॉल करना संभव है। मैं आपके द्वारा वर्णित समूह स्क्रॉलिंग विधि दोनों का उपयोग करता हूं और मैं वर्तमान में चयनित आइटम को देखने में स्क्रॉल करता हूं। ऐसा करने के लिए, मैं इस प्रकार आपरेशन आह्वान करने के लिए डिस्पैचर का उपयोग करता है एक सहायक विधि है:

private void ScrollCurrentSelectionIntoView() 
{ 
    this.dataGrid.Dispatcher.BeginInvoke(() => 
    { 
     this.dataGrid.ScrollIntoView(
      this.dataGrid.SelectedItem, 
      this.dataGrid.CurrentColumn); 
    }); 
} 

जब एक ईवेंट हैंडलर (शायद क्योंकि से सीधे कहा जाता रहा BeginInvoke इस्तेमाल किया क्योंकि अन्यथा, ScrollIntoView करने के लिए कॉल विफल हो जाएगा DataGrid घटना को संभालने के लिए अपने राज्य को सही तरीके से अपडेट नहीं किया गया था)। यह दृष्टिकोण सुनिश्चित करता है कि स्क्रॉल का आविष्कार करने से पहले वर्तमान ईवेंट हैंडलिंग ठीक से पूर्ण हो जाए।

संबंधित मुद्दे

 संबंधित मुद्दे