.NET4

2010-04-29 10 views
6

के साथ WPF वैश्विक शैलियों की समस्या मैंने अभी अपना WPF एप्लिकेशन .Net3.5 से .Net4 में बदल दिया है। ऐसा करने से मेरी सारी वैश्विक शैलियों को काम करना बंद कर दिया गया। एक कुंजी का उपयोग करके स्पष्ट रूप से सेट की गई शैली केवल काम करती है। मैंने कुछ शोध किया है और यह पता लगाया है कि इसका क्या कारण है, और इसे एक साधारण ऐप में पुन: उत्पन्न किया।.NET4

मेरे पास एक साधारण WPF ऐप है जिसमें टेक्स्ट वाला कोई बटन नहीं है - कोई शैली या कुछ और नहीं। मैं App.xaml की ResourceDictionary में सभी बटन के लिए एक शैली को परिभाषित:

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="Red"></Setter> 
</Style> 

मेरे बटन अब लाल है - ठीक सब। अब मैं इसे एक अलग परियोजना में एक अलग संसाधन डिक्शनरी में ले जाता हूं। यह वह जगह है जहां मैं अपनी सभी साझा शैलियों को पकड़ना चाहता हूं। बटन अभी भी लाल है, और SharedStyles.xaml को App.xaml से मेरे संदर्भ इस तरह दिखता है:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries>    
      <ResourceDictionary Source="/StyleLib;component/SharedStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

अब - मैं StyleLib की SharedStyles.xaml चाहते सभी विशिष्ट शैली परिभाषाएँ धारण करने के लिए, तो मैं एक नई फ़ाइल बनाना ButtonStyles.xaml नामक एक ही प्रोजेक्ट में, और मैं वहां संसाधन जोड़ता हूं। असल में - मैं एक और शैली भी स्पष्ट रूप से उपयोग करने के लिए एक कुंजी के साथ जोड़ता हूं (तकनीकी रूप से मैंने इसे बाद में जोड़ा, इसलिए इसमें होने वाली समस्या के साथ इसका कोई संबंध नहीं है)।

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Background" Value="Red"></Setter> 
    </Style> 

    <Style x:Key="Explicit" TargetType="{x:Type Button}"> 
     <Setter Property="Background" Value="Blue"></Setter> 
    </Style>  
</ResourceDictionary> 

ButtonStyles.xaml SharedStyles.xaml से संदर्भित है:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="/StyleLib;component/ButtonStyles.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

अब - मेरे बटन नियंत्रण किसी भी अधिक स्टाइल नहीं है। असल में - यह अभी भी वीएस -2010 में पूर्वावलोकन-विंडो में स्टाइल के रूप में दिखाया गया है, लेकिन जब मैं एप्लिकेशन चलाता हूं तो वे स्टाइल नहीं होते हैं। यदि मैं स्पष्ट रूप से "स्पष्ट" कुंजी के साथ शैली का संदर्भ देता हूं तो उन्हें यह शैली मिलती है - इसलिए फ़ाइल सफलतापूर्वक शामिल की जाती है।

एक और मजेदार बात यह है कि अगर मैं अब SharedStyle.xaml में एक और शैली जोड़ता हूं - उदा। स्टैकपैनेल के लिए एक वैश्विक शैली (जो मैंने कोशिश की थी) - फिर बटन स्टाइल.एक्सएएमएल के अंदर वैश्विक शैली काम करना शुरू कर देती है ..!

मेरा प्रश्न अब है अगर मैं कुछ गलत कर रहा हूं, या यदि यह .NET4 में एक बग की तरह लगता है? मुझे एक बग की तरह लगता है .. यह ठीक है .Net3.5 में ठीक काम किया!

उत्तर

3

मुझे यह बहुत अजीब लगता है। यह .Net3.5 में ठीक काम करता है, और मुझे कोई कारण नहीं दिख रहा है कि अब यह क्यों काम नहीं करना चाहिए!

मैंने इसे माइक्रोसॉफ्ट के लिए एक बग के रूप में बताया। आप view the bug report here कर सकते हैं। जब वे फ़ाइल की पुष्टि करते हैं तो पृथक समस्या के साथ समाधान के लिए स्रोत कोड भी उपलब्ध होना चाहिए।

+0

माइक्रोसॉफ्ट ने इसे एक बग के रूप में स्वीकार किया, इसलिए अनुमान लगाएं कि इसके बारे में और कुछ नहीं करना है .. – stiank81

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