2010-09-24 10 views
6

मेरे पास कुछ कस्टम डेटा नियंत्रण है जो मैंने कुछ डेटा प्रदर्शित करने के लिए WPF में लिखा था। मैं इस उपयोगकर्ता नियंत्रण को एक सूची में दिखाना चाहता हूं, लेकिन मैं एकाधिक कॉलम हेडर भी प्रदान करना चाहता हूं (उपयोगकर्ता cotrol पर कुछ गुणों से मेल खाता है) ताकि उपयोगकर्ता उपयोगकर्ता नियंत्रण में निहित गुणों को सॉर्ट कर सकें।डब्ल्यूपीएफ ग्रिड/सूची में एकाधिक कॉलम फैलाने का सबसे अच्छा तरीका?

मुझे यकीन नहीं है कि इस बारे में जाने का सबसे अच्छा तरीका है।

वर्तमान में मेरे पास इन उपयोगकर्ता नियंत्रणों को प्रदर्शित करने वाला एक सूची बॉक्स है, लेकिन ListBox का कोई हेडर नहीं है और मैं यह नहीं समझ सकता कि ListBox पर एकाधिक शीर्षलेख कैसे डालें।

आदर्श रूप में मैं कुछ इस तरह करना चाहते हैं:

Header1 Header2 Header3 Header4 
[UserControlThatSpansAllFourColumns] 

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

यदि किसी के पास कोई सुझाव है, तो मैं उनका स्वागत करूंगा!

उत्तर

3

ठीक है, यह किसी भी मामले में "सर्वश्रेष्ठ तरीका" नहीं है, लेकिन मैं इसे केवल फेंक दूंगा। एक तरीका यह है कि आपको जिस तरह की काम की ज़रूरत है, वह एक कस्टम व्यू कंटैनर स्टाइल के साथ लिस्ट व्यू का उपयोग करना है जो <ContentPresenter> का उपयोग करता है डिफ़ॉल्ट <GridViewRowPresenter> का। इस छोटे से XAML कुछ हद तक यह दर्शाता है:

<ListView> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ListViewItem"> 
         <ContentPresenter/> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Header1"/> 
      <GridViewColumn Header="Header2"/> 
     </GridView> 
    </ListView.View> 

    <Button>Item1</Button> 
    <Button>Item2</Button> 

</ListView> 

यहाँ, आप कॉलम हेडर मिलता है, और आइटम पूरे सूचीदृश्य पर होते हैं। इस समाधान में, हालांकि, वस्तुओं का प्रतिपादन स्वयं की दुनिया में है। यह ListView के लिए परिभाषित कॉलम से वास्तव में कनेक्ट नहीं है। तो मुझे लगता है कि यह काम बेहतर बनाने का एक तरीका है अपने <RowPresenter> कार्यान्वयन को प्रदान करना जो वास्तव में मूल सूचीदृश्य में परिभाषित ग्रिड व्यू कॉलम को ध्यान में रखता है।

वैसे भी, उम्मीद है कि यह किसी भी तरह से मदद करता है।

+0

बहुत बहुत धन्यवाद! यह मूल रूप से मैं क्या देख रहा था। मैंने सामग्री उपयोगकर्ता को एक कस्टम UserControl के साथ बदल दिया और यह काम किया। थोड़ा सॉर्टिंग जादू और मेरे पास एक पूरा समाधान होगा। –

+0

यह सहायक है धन्यवाद, क्या आप कृपया मुझे बता सकते हैं कि हम कुछ कॉलम कैसे रख सकते हैं और केवल विशिष्ट कॉलम मर्ज कर सकते हैं? – robot

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

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