सामान है कि काम करता हैWPF ControlTemplate शैली टूट जाता है
मुझे लगता है कि एक StackPanel के बच्चे हैं एक खास प्रकार के नियंत्रण शैली की जरूरत है। मैं उपयोग कर रहा हूँ:
<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type TextBlock}">...</Style>
</StackPanel.Resources>
<TextBlock ...>
...
</StackPanel>
और यह ठीक काम करता है! प्रत्येक टेक्स्टब्लॉक यह पता लगाने के लिए कि यह कैसे स्टाइल किया जाना चाहिए, इसके माता-पिता (स्टैकपैनेल) के संसाधनों को देखता है। यह आप घोंसला TextBlock नीचे एक StackPanel नीचे ... अगर यह इसके प्रत्यक्ष माता पिता में एक शैली नहीं मिल रहा है, वह अपने माता पिता के माता पिता पर इतने पर देखने के लिए और होगा कितनी दूर, कोई फर्क नहीं पड़ता जब तक यह (कुछ पाता है इस मामले में , शैली जिसे परिभाषित किया गया था)।
सामान कि
मैं जब मैं एक ContentControl है, जो एक खाका था अंदर एक TextBlock नेस्ट कोई समस्या हुई थी काम नहीं करता है (नीचे दिए गए कोड को देखें)। कंट्रोल टेम्पलेट अपने पाठकों को अपने माता-पिता, दादा दादी से पुनर्प्राप्त करने के तरीके को बाधित करता प्रतीत होता है ...
कंट्रोल टेम्पलेट का उपयोग प्रभावी ढंग से टेक्स्टब्लॉक के सही तरीके को ढूंढने के साधनों को ठंडा कर देता है (स्टैकपैनल में से एक। संसाधन)। जब यह ControlTemplate से मुकाबला करता है, तो यह पेड़ के संसाधनों में अपनी शैली की तलाश करना बंद कर देता है, और इसके बजाय एप्लिकेशन के मर्ज किए गए शब्दकोश में शैली के लिए डिफ़ॉल्ट रूप से चूक जाता है।
<StackPanel Orientation="Vertical" Background="LightGray">
<StackPanel.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Green" />
</Style>
</StackPanel.Resources>
<TextBlock Text="plain and simple in stackpanel, green" />
<ContentControl>
<TextBlock Text="inside ContentControl, still green" />
</ContentControl>
<ContentControl>
<ContentControl.Template>
<ControlTemplate TargetType="{x:Type ContentControl}">
<StackPanel Orientation="Vertical">
<ContentPresenter />
<TextBlock Text="how come this one - placed in the template - is not green?" />
</StackPanel>
</ControlTemplate>
</ContentControl.Template>
<TextBlock Text="inside ContentControl with a template, this one is green as well" />
</ContentControl>
</StackPanel>
वहाँ एक रास्ता है - कि ControlTemplate अंदर TextBlock परिभाषित शैली प्राप्त करने के लिए - ControlTemplate.Resources को StackPanel.Resources में शैली डुप्लिकेट करने के अलावा?
धन्यवाद ...
महान स्पष्टीकरण आधार शैलियों के लिए प्रयोग किया जाता है! मैं जिस तरह से आप आधारितऑन = "{स्टेटिक रिसोर्स {एक्स: टाइप टेक्स्टब्लॉक}} का उपयोग करने के तरीके को भी पसंद करता हूं"। दिलचस्प। और अब मैं WPF ControlTemplates एक सीमा है, मैं काम करने के लिए यह :) –
धन्यवाद के आसपास की कोशिश कर सकते समझता है पता है, मैं अंत में समझ में आ कैसे मेरे ControlTemplate करने के लिए एक शैली लागू करने के लिए। तीसरा उदाहरण रोशनीपूर्ण था और मुझे केवल नियंत्रण टेम्पलेट (ओं) की आवश्यकता के लिए एक शैली लागू करने की अनुमति देता है। –