2011-03-04 12 views
15

के पीछे कोड में आप कोड को निम्नलिखित में कैसे सेट कर सकते हैं?आधारितऑन = "{स्टेटिक रिसोर्स {x: टाइप टेक्स्टबॉक्स}}" शैली

<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}"> 

मैं App.xaml में विलय की गई थीम का उपयोग कर रहा हूं। यह सभी नियंत्रणों के लिए बहुत अच्छा काम करता है लेकिन जब मैं किसी चीज़ के लिए शैली परिभाषित करता हूं, उदा। TextBox, थीम स्टाइल तब तक नहीं उठाया जाता जब तक कि मैं ऊपर की तरह BasedOn का उपयोग नहीं करता, इसके बजाय यह डिफ़ॉल्ट TextBox शैली प्राप्त करता है।

अब मैं कोड में एक DataGridTextColumn के पीछे बना रहा हूं और मैं BasedOn हिस्सा EditingElementStyle

Style editingStyle = new Style(typeof(TextBox)); 
editingStyle.BasedOn = ...?; 

कोई सुझाव के लिए काम करने के लिए नहीं मिल सकता है? साथ ही, आधारितऑन का उपयोग किए बिना लागू डिफ़ॉल्ट शैली के बजाय थीम स्टाइल पाने का कोई तरीका है?

धन्यवाद

+0

आप थीम एक दिया नियंत्रण के लिए लागू करने की कोशिश कर रहे हैं और है स्थानीय शैली थीम घटकों यह प्रभावित करता है जो ओवरराइड:

तो मैं इस सलाह देते हैं? –

+0

@Aaron: मैं एक थीम का उपयोग कर रहा हूं जो सभी नियंत्रणों को प्रभावित करता है। लेकिन कई जगहों पर मुझे विशिष्ट सेटर्स, ट्रिगर्स इत्यादि जोड़ने की आवश्यकता है उदाहरण के लिए 'ListBox' ItemContainerStyle में' ListBoxItem.Is चयनित 'बाध्यकारी। मैं चाहता हूं कि थीम स्टाइल एक अतिरिक्त सेटर –

उत्तर

22

इस प्रयास करें::

editingStyle.BasedOn = (Style) FindResource(typeof (TextBox)) 

और मैं डॉन '

Style baseStyle = new Style(typeof(TextBox)); 
Style editingStyle = new Style(typeof(TextBox)); 
editingStyle.BasedOn = baseStyle; 

तुम भी निर्माता में कर सकते हैं टी किसी भी तरह से आप कैसे सी पता है एक BasedOn निर्दिष्ट किए बिना थीम शैली को लागू करें। यदि ऐसा कोई तरीका है, तो मैं इसे भी जानना चाहूंगा ...

2

यह काम करना चाहिए:

Style editingStyle = new Style(typeof(TextBox), baseStyle); 
+0

के साथ लागू हो, आपके उत्तर के लिए धन्यवाद! हां, मुझे उम्मीद थी कि काम करेगा लेकिन कुछ कारणों से थीम स्टाइल नहीं उठाया गया है। अगर मैं इसे Xaml में करता हूं तो यह काम करता है .. –

1

मुझे answer of Pavlo Glazkov पसंद है, लेकिन यह संकलित नहीं है।

FindResource (non-static) member of FrameworkElement है। खोज अनुरोध के संदर्भ की पहचान करना आवश्यक है।

style.BasedOn = (Style)frameworkElement.FindResource(typeof(TextBox)); 
संबंधित मुद्दे

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