एक wpf-application की कल्पना करें जहां मैं थीम को गतिशील रूप से बदल सकता हूं। मैं संसाधन-संसाधन स्तर पर संसाधन शब्दकोश को स्वैप करके ऐसा करता हूं। विषय-संसाधनों में टेक्स्टबॉक्स और इसी तरह के लिए परिभाषित अंतर्निहित शैलियों हैं।विषय-शैली/विकल्प से अलग-अलग स्थानीय अंतर्निहित शैली को अलग-अलग आधारित डायनामिक रिसोर्स
अब मेरे पास मेरे एप्लिकेशन में एक हिस्सा है जहां टेक्स्टबॉक्स में यह विशिष्ट शैली "NonDefaultTextBoxStyle" होनी चाहिए और एप्लिकेशन व्यापक रूप से अंतर्निहित नहीं है।
मैं यह करने के प्यार होता (DynamicResource का उपयोग कर, क्योंकि विषय रनटाइम के दौरान बदला जा सकता है):
<StackPanel>
<StackPanel.Resources>
<Style TargetType="TextBox" BasedOn="{DynamicResource NonDefaultTextBoxStyle}"/>
</StackPanel.Resources>
<TextBox .../>
<TextBox .../>
<TextBox .../>
</StackPanel>
बजाय यह करने के लिए होने के
:
<StackPanel>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
</StackPanel>
अब इस आसान बनाने के लिए, मैं StackPanel पर एक विरासत संलग्न संपत्ति सेट करने का यह विचार था जो प्रत्येक वंशज टेक्स्टबॉक्स पर एक निर्दिष्ट शैली निर्धारित करेगा।
क्या यह एक अच्छा विचार है? क्या सरल तरीके हैं? क्या मैं कुछ भूल रहा हूँ?
इसकाफी करने पर निर्भर करता: क्या एक शैली में = "{DynamicResource ...} basedon लिए एक विकल्प है
मैं केवल प्रश्न पढ़ने के लिए प्रोत्साहित कर सकते हैं! तुम मेरी समस्या को हल नहीं कर रहे हो! –
@ MarkusHütter Ah मैं अब आपका प्रश्न देखता हूं। हम्म अच्छी तरह से मेरे उत्तर के साथ जारी है, आप 'फ्रेमवर्कप्रॉपर्टी मेटाडेटाऑप्शन। इनहेरिट्स' के लिए अपने समाधान में संलग्न निर्भरता गुणों को बदलने में सक्षम होना चाहिए (इस http://msdn.microsoft.com/en-us/library/ms557296.aspx के बजाय ' UIPropertyMetadata') और उसके बाद तत्व प्रकार 'StylesChanged' फ़ंक्शन की जांच करें। अटैचमेंट प्रॉपर्टी को केवल स्टैकपैनल तत्व पर एक बार लिखा जाना चाहिए। – NtscCobalt
तो आपका मतलब है कि मैंने पहले से ही प्रश्न में क्या सुझाव दिया है ... –