(इस तरह के TabControl के रूप में) ItemsControl व्युत्पन्न वर्ग के लिए, आप ItemContainerStyleSelector निर्भरता संपत्ति का उपयोग कर सकते हैं। जब यह निर्भरता प्रॉपर्टी सेट की जाती है, तो आइटम्स कंट्रोल नियंत्रण में प्रत्येक आइटम के लिए StyleSelector.SelectStyle() को कॉल करेगा। यह आपको विभिन्न वस्तुओं के लिए विभिन्न शैलियों का उपयोग करने की अनुमति देगा।
निम्न उदाहरण एक TabControl में अंतिम टैब आइटम बदल कर अपने पाठ को बोल्ड है और थोड़ा अन्य टैब से भी बड़ा।
पहले, नई StyleSelector वर्ग:
class LastItemStyleSelector : StyleSelector
{
public override Style SelectStyle(object item, DependencyObject container)
{
var itemsControl = ItemsControl.ItemsControlFromItemContainer(container);
var index = itemsControl.ItemContainerGenerator.IndexFromContainer(container);
if (index == itemsControl.Items.Count - 1)
{
return (Style)itemsControl.FindResource("LastItemStyle");
}
return base.SelectStyle(item, container);
}
}
इस शैली चयनकर्ता कुंजी "LastItemStyle" लेकिन केवल नियंत्रण में अंतिम आइटम के लिए के साथ शैली वापस आ जाएगी। अन्य आइटम डिफ़ॉल्ट शैली का उपयोग करेंगे। (ध्यान दें, यह फ़ंक्शन केवल आइटम्सकंट्रोल के सदस्यों का उपयोग करता है। इसका उपयोग अन्य आइटम्स कंट्रोल व्युत्पन्न कक्षाओं के लिए भी किया जा सकता है।) इसके बाद, आपके एक्सएएमएल में, आपको पहले दो संसाधन बनाने की आवश्यकता है। पहला संसाधन इस LastItemStyleSelector के लिए होगा और दूसरा संसाधन शैली है।
<Window.Resources>
<local:LastItemStyleSelector x:Key="LastItemStyleSelector" />
<Style x:Key="LastItemStyle" TargetType="TabItem">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="FontSize" Value="16" />
</Style>
</Window.Resources>
फिर अंत में अपने TabControl:
<TabControl ItemContainerStyleSelector="{StaticResource LastItemStyleSelector}">
<TabItem Header="First" />
<TabItem Header="Second" />
<TabItem Header="Third" />
</TabControl>
अधिक जानकारी के लिए MSDN दस्तावेज़ देखें:
स्रोत
2012-02-25 21:29:42
यह गतिशील सामग्री के लिए काम नहीं करेगा क्योंकि @RFactor को स्पष्ट रूप से आवश्यकता है, क्योंकि जब कोई नया टैब जोड़ा जाता है तो आइटमकंटर्स को पुनर्निर्मित नहीं किया जाता है। तो, अंत में एक "नया" टैब जोड़ें, और इसे भी "LastItemStyle" असाइन किया जाएगा। – WiredPrairie