2011-05-23 4 views
7

से नियंत्रण प्राप्त करना मान लें कि मेरे पास डेटाग्रिड टेम्पलेट कॉलम के अंदर मनमाने ढंग से नियंत्रण है, मैं यह जानना चाहता हूं कि नियंत्रण कैसे प्राप्त किया जाए, यह देखते हुए कि मैंने डेटाग्रिडसेल को पुनर्प्राप्त किया है जिसमें उस नियंत्रण शामिल है।डेटाग्रिडसेल

इस प्रकार मेरे XAML डेटा ग्रिड युक्त फ़ाइल है:

<DataGrid Name="dgMovement"> 
...  
    <DataGridTemplateColumn Header="Target %"> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
      <vi:PercentageEditor Value="{Binding TargetPercentage, Mode=TwoWay, 
         UpdateSourceTrigger=PropertyChanged}" Width="100px" 
         cal:Message.Attach="[Event PreviewLostKeyboardFocus] = [Action ChangeTargetPercentage];[Event PreviewGotKeyboardFocus] = [Action OnFocus]" 
         Name="aa" /> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn>... 

मैं इस प्रकार विस्तार तरीकों का उपयोग कर DataGridCell लिया गया:

DataGridCell cell = view.dgMovement2.GetCell(index, 6); 

विस्तार के तरीकों, निहित में एक स्थिर वर्ग है here

सवाल यह है कि, मैं "प्रतिशत संपादक" को कैसे प्राप्त करूं, एक बार मुझे डेटाग्रिडसेल मिला? कोई भी मेरी मदद कर सकता हैं? किसी भी तरह की सहायता का स्वागत किया जाएगा। धन्यवाद!

उत्तर

11

आप इसे टेम्पलेट में ढूंढने के लिए नियंत्रण के नाम का उपयोग कर सकते हैं, उदा।

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <uc:Bogus x:Name="root" ItemsSource="{Binding Machines}"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 
var cell = dataGrid.GetCell(5, 0); 
var cp = (ContentPresenter)cell.Content; 
var bogus = (Bogus)cp.ContentTemplate.FindName("root", cp); 

नोट हालांकि यह आम तौर पर नहीं अधिकांश भाग के लिए टेम्प्लेट की गई नियंत्रण को संशोधित करने के रूप में आवश्यक रूप से बाध्यकारी, संलग्न गुण और घटनाओं अकेले डेटा का उपयोग कर किया जा सकता है किया जाना चाहिए। आम तौर पर मैं कोड के माध्यम से कस्टम नियंत्रण में टेम्पलेट पहुंच प्रतिबंधित कर दूंगा (जो अक्सर designated parts है)।

+0

धन्यवाद! यह मेरे मुद्दों को हल किया! – bluebloodedboy

+0

खुशी हुई यह मदद की :) (आप इसके बाईं ओर स्थित चेकमार्क रूपरेखा पर क्लिक करके इस जवाब को स्वीकार कर सकते हैं) –

+0

कुछ साल बाद भी मुझे उपयोगी पाया गया। धन्यवाद। –