2009-11-12 8 views
10

के साथ उदाहरण कभी-कभी सबसे आसान उदाहरण खोजने के लिए सबसे कठिन उदाहरण हैं। । ।WPF - DataGridComboBoxColumn

मेरे पास 2 कॉलम के साथ एक डाटाग्रिड है। एक कॉलम में भूमिका की जानकारी होती है, अन्य कॉलम में उपलब्ध उपयोगकर्ताओं की सूची के साथ एक कॉम्बो बॉक्स होना चाहिए। Combobox में डेटा पहले कॉलम में डेटा से असंबंधित है। मुझे इस तथ्य से फेंक दिया गया है कि कंबोबॉक्स में डेटाकॉन्टेक्स्ट नहीं है, केवल एक आइटमसोर्स है और मैं बाध्यकारी का उपयोग नहीं कर सकता।

क्या कोई मुझे एक साधारण उदाहरण के लिए इंगित कर सकता है जो तालिका और कॉम्बो बॉक्स में डेटा के लिए दो अलग-अलग डेटा सेट का उपयोग करता है?

उत्तर

7

डेटाग्रिड में कॉलम में डेटाैकेंटेक्स्ट नहीं है, क्योंकि उन्हें कभी भी दृश्य पेड़ में नहीं जोड़ा जाता है। थोड़ा विचित्र लग रहा है लेकिन vinces blog पर एक नज़र डालें, इसे विजुअल लेआउट का एक अच्छा उदाहरण मिला है। एक बार ग्रिड तैयार की है कोशिकाओं एक डेटा संदर्भ है और आप सामान्य बाइंडिंग का उपयोग कर उन्हें में कॉम्बो बॉक्स आइटम स्रोत सेट कर सकते हैं (निश्चित संसाधनों नहीं ..)

आप इस तरह के

<dg:DataGridComboBoxColumn> 
     <dg:DataGridComboBoxColumn.EditingElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" /> 
     </Style> 
     </dg:DataGridComboBoxColumn.EditingElementStyle> 
    </dg:DataGridComboBoxColumn> 
के रूप में कॉम्बो बॉक्स आइटम स्रोत का उपयोग कर सकते

एक नज़र here और भी here कुछ कोड

1

के बजाय DataGridTextColumns का उपयोग कर एक के बजाय एक DataGridComboBoxColumn का उपयोग करता है के लिए है। फिर कोई आइटमसोर्स का उपयोग कर डेटा में भर जाता है, जो नीचे दिए गए उदाहरण में स्थिर संसाधन में बाहरी enum को इंगित करता है, और अंत में परिणाम लक्ष्य ऑब्जेक्ट को बाध्य करता है जो चयनित Item बाइंडिंग में उपयोगकर्ता चयन को रोक देगा।

<DataGrid.Columns> 

<DataGridComboBoxColumn Header="MySelections" 
         SelectedItemBinding="{Binding MySelectionsProperty}" 
         ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" /> 
</DataGrid.Columns> 

DataGridComboBoxColumn Class

पर MSDN पर एक पूर्ण उदाहरण देखें