डब्ल्यूपीएफ Listbox
में, मैं इन 2 विचारों से उलझन में हूं: ItemTemplate
और ItemsPanelTemplate
क्या कोई मुझे और समझा सकता है?ItemTemplate और ItemPanelTemplate के बीच क्या अंतर है?
धन्यवाद जॉन
डब्ल्यूपीएफ Listbox
में, मैं इन 2 विचारों से उलझन में हूं: ItemTemplate
और ItemsPanelTemplate
क्या कोई मुझे और समझा सकता है?ItemTemplate और ItemPanelTemplate के बीच क्या अंतर है?
धन्यवाद जॉन
ItemTemplate एक DataTemplate अपने ListBox में आइटम प्रस्तुत करने के लिए प्रयोग किया जाता है निर्दिष्ट करने के लिए प्रयोग किया जाता है। ItemPanelTemplate का उपयोग आपके सूची बॉक्स के बच्चों को व्यवस्थित करने के लिए उपयोग किए गए पैनल को निर्दिष्ट करने के लिए किया जाता है।
उदाहरण के लिए, यदि आपका लिस्टबॉक्स एक अवलोकन करने योग्य चयन से जुड़ा हुआ है तो आपको यह बताए जाने के लिए डेटा टेम्पलेट निर्दिष्ट करना होगा कि प्रत्येक व्यक्ति ऑब्जेक्ट को कैसे प्रस्तुत किया जाए।
<ListBox ItemsSource={Binding Persons}>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text={Binding FirstName}/>
<TextBlock Text={Binding LastName}/>
<TextBlock Text={Binding Age}/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
यह प्रत्येक आइटम को लंबवत रूप से व्यवस्थित करेगा क्योंकि ListBox डिफ़ॉल्ट रूप से एक स्टैकपैनल का उपयोग करता है। आप इस व्यवहार को बदलना चाहते हैं, ItemPanelTemplate संपत्ति का इस्तेमाल किया:
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
तुम भी किसी अन्य पैनल के लिए StackPanel बदल सकते हैं (उदाहरण के लिए WrapPanel)।
मुझे उदाहरण के द्वारा यह समझाने की कोशिश करते हैं:
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="SteelBlue" Padding="5" BorderBrush="Black"
BorderThickness="1" Margin="0,2">
<TextBlock Text="{Binding}"/>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Background="DarkKhaki"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
और परिणाम:
ItemTemplate
सूची में प्रत्येक आइटम के लेआउट निर्धारित करता है। दूसरी तरफ ItemsPanel
पैनल है जिसमें व्यक्तिगत आइटम होंगे। उपर्युक्त परिभाषा को देखते हुए दृश्य पेड़ इस तरह कुछ होगा:
<StackPanel>
<Border>
<TextBlock Text="Alpha"/>
</Border>
<Border>
<TextBlock Text="Beta"/>
</Border>
....
</StackPanel>