2012-04-12 13 views
5

में डेटाग्रिड पंक्ति को देखने के लिए प्रोग्रामिंग रूप से मैं अपने डेटा ग्रिड की एक पंक्ति प्रोग्रामेटिक रूप से देखने के लिए लाना चाहता हूं। मेरे पास 100 से अधिक पंक्तियां हैं I जब मैं एक पंक्ति बनाता हूं (जो मैं एक अवलोकन संग्रह में कोई आइटम जोड़कर कर रहा हूं) मैं उस नई पंक्ति को चुनना चाहता हूं और इसे देखने में लाता हूं। मैं अपने कोड में नई पंक्ति का चयन करने में सक्षम था लेकिन स्क्रॉलिंग नहीं कर सका। अधिक से अधिक मैं चाहता हूं कि पंक्ति का पहला कक्ष संपादन मोड में हो ताकि उपयोगकर्ता टेक्स्ट इनपुट कर सके। मैं आवेदन के लिए एमवीवीएम पैटर्न का पालन कर रहा हूं और अपने विचारों में शून्य कोड रखना चाहता हूं। इसे कैसे प्राप्त किया जा सकता है?प्रोग्रामिंग रूप से डब्लूपीएफ, एमवीवीएम

कोई मदद या सुझाव की सराहना की होगी ....

अद्यतन:

यह मैं अपने XAML

<telerik:RadGridView ItemsSource="{Binding AllPartClasses}" 
        SelectedItem="{Binding SelectedPartClassViewModel, Mode=TwoWay}"   
        SelectionMode="Single" IsSynchronizedWithCurrentItem="True"> 
मैं इस

किया मेरे विचार मॉडल में

में क्या किया

void AddNewPartClassExecute() 
    { 
     PartClass newPartClass = new PartClass(); 
     PartClassViewModel tempPartClass = new PartClassViewModel(newPartClass); 
     tempPartClass.IsInValid = true; 
     AllPartClasses.Add(tempPartClass); 
     SelectedPartClassViewModel = tempPartClass; 
     Global.DbContext.PartClasses.AddObject(newPartClass); 

     //OnPropertyChanged("AllPartClasses"); 
    } 
public PartClassViewModel SelectedPartClassViewModel 
    { 
     get 
     { 
      return _selectedPartClassViewModel; 
     } 
     set 
     { 
      _selectedPartClassViewModel = value; 
      OnPropertyChanged("SelectedPartClassViewModel"); 
     } 
    } 

यह मेरे लिए काम नहीं करता है।

उत्तर

2

एमवीवीएम पैटर्न का पालन करते समय आपको एक कोड से स्क्रॉल करने जैसी यूआई-विशिष्ट सामग्री नहीं करना चाहिए।

समाधान आसान होगा - बस ViewModel में एक संपत्ति के लिए DataGrid.SelectedItem बाँध और जब आइटम संग्रह में एक नया आइटम जोड़ने सिर्फ एक संपत्ति SelectedItem करने के लिए बाध्य है, तो यह सिर्फ जोड़े गए आइटम और डेटा ग्रिड के लिए संदर्भ होता अद्यतन एक उपयुक्त पंक्ति का चयन करना चाहिए खुद ब खुद।

<DataGrid 
    ItemsSource="{Binding UnderyingItemsCollection}" 
    SelectedItem="{Binding RecentlyAddedItem, Mode=TwoWay}" 
    IsSynchronizedWithCurrentItem="True"> 
+1

देखने के लिए बहुत बहुत धन्यवाद। मैंने जो किया वह मैंने किया। लेकिन अभी तक कोई भाग्य नहीं है। मैंने अपडेट कोड में अपना कोड जोड़ा है। अगर मुझे कुछ याद आ रहा है तो कृपया मुझे बताएं। मुझे चयनित पंक्ति मिल गई लेकिन मुझे नीचे की पंक्ति तक स्क्रॉल करने के लिए डेटाग्रिड क्या मिलेगा ...? – IamaC

+0

मैंने कोशिश की है, लेकिन यह 'SelectedItem' पंक्ति पर स्क्रॉल नहीं कर रहा है। मैंने ViewModel से 'SelectedItem' को बदलने की कोशिश की है, हालांकि 'DataGrid' पंक्ति' चयनित Item 'पर स्क्रॉल नहीं कर रहा है। – StepUp

5
नियमित WPF DataGrid आप ScrollIntoView उपयोग कर सकते हैं

। अपने दृश्य में चयन दृश्य परिवर्तन को अपने दृश्य कोड-सीएस फ़ाइल के पीछे निम्नलिखित में हुकअप करें।

private void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Selector selector = sender as Selector; 
    DataGrid dataGrid = selector as DataGrid; 
    if (dataGrid != null && selector.SelectedItem != null && dataGrid.SelectedIndex >= 0) 
    { 
     dataGrid.ScrollIntoView(selector.SelectedItem); 
    } 
} 
संबंधित मुद्दे