2013-09-04 6 views
5

मैं एक संसाधन मेरी XAML में परिभाषित किया है:मैं कोड से SolidColorBrush संसाधन मान क्यों सेट नहीं कर सकता?

<core:WidgetBase xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="....Silverlight.LiquidityConstraintsView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:core="clr-namespace:...Silverlight;assembly=....Silverlight" 
    xmlns:local="clr-namespace:....Silverlight" 
    mc:Ignorable="d"> 

    <core:WidgetBase.Resources> 
     <SolidColorBrush x:Key="..." /> 
    </core:WidgetBase.Resources> 
... 

मैं कोड से यह स्थापित करने के लिए कोशिश कर रहा हूँ:

void _administrationClient_GetByFilterModuleSettingCompleted(object sender, GetByFilterModuleSettingCompletedEventArgs e) 
{ 
     this.Resources["..."] = new SolidColorBrush(Colors.Red); 
} 

लेकिन मैं त्रुटि मिलती है:

विधि या ऑपरेशन है कार्यान्वित नहीं।

स्टैक ट्रेस: ​​

at System.Windows.ResourceDictionary.set_Item(Object key, Object value) 
    at ....Silverlight.LiquidityConstraintsView._administrationClient_GetByFilterModuleSettingCompleted(Object sender, GetByFilterModuleSettingCompletedEventArgs e) 
    at ....Service.AdministrationServiceClient.OnGetByFilterModuleSettingCompleted(Object state) 

यह तब होता है जब मैं एक सर्वर के लिए एक अनुरोध को वापस ले भेज मुझे एक रंग लाने के लिए है, तो जब यह रिटर्न मैं कोशिश करते हैं और संसाधन है कि रंग सेट, यह भले ही विफल रहता है मैं कोशिश करता हूं और इसे उस बिंदु पर लाल के रूप में सेट करता हूं।

यदि यह बिल्कुल मदद करता है, तो जिस विधि में मैं इसे स्थापित कर रहा हूं वह डब्ल्यूसीएफ कॉल से सर्वर पर एक एसिंक कॉलबैक विधि है।

<Window.Resources> 
    <SolidColorBrush x:Key="Brush" Color="Aqua" /> 
</Window.Resources> 

public MainWindow() 
{ 
    this.Resources["Brush"] = new SolidColorBrush(Colors.Green); 
    InitializeComponent(); 
} 

इसलिए, मैं तुम्हें करने के लिए सुझाव है कि आपकी समस्या कहीं और झूठ:

+1

यह काम करना चाहिए .. मैं अपने अंत यह works.Where वास्तव में आप यह मान आप कुछ और कोड साझा कर सकते हैं सेट कर रहे हैं पर यह कोशिश की? – Nitin

+0

मैं सहमत हूं, त्रुटि इस सामान्य कार्रवाई से मेल नहीं खाती है। क्या हमारे पास स्टैकट्रैक हो सकता है? –

+2

शायद यह इस तथ्य के कारण है कि: 'सिल्वरलाइट गतिशील संसाधनों का समर्थन नहीं करता है। एक्सएएमएल में प्रमुख संसाधनों के सभी संसाधन संदर्भ स्थिर हैं। '[एमएसडीएन] पर लिंक (http://msdn.microsoft.com/en-us/library/cc903925 (VS.95) .aspx)। –

उत्तर

7

आप परावर्तक में ResourceDictionary के लिए सेटर को देखें, तो (सिल्वरलाइट के लिए), आप देखेंगे कि यह NotImplementedException फेंकता है, इसलिए यह सिल्वरलाइट में काम नहीं करेगा।

आप संसाधन को हटाने और इसे फिर से जोड़ने का प्रयास कर सकते हैं, लेकिन यह अंधेरे में एक शॉट है।

+0

यह पागल है कि चांदी की रोशनी इसका समर्थन नहीं करती है, लेकिन आपका कामकाज काम करता है ... – sprocket12

0

इस आपरेशन यदि आप इसे एक नया WPF आवेदन में कोशिश अपेक्षा के अनुरूप काम करेंगे।

अद्यतन >>>

इस समस्या को कैसे पूरी तरह से बचने और बस अपने MainWindow.xaml.cs में एक public संपत्ति का उपयोग कर के बारे में?

MainWindow.xaml.cs में:

public SolidColorBrush Brush { get; set; } 
फिर अपने आवेदन में कहीं भी

, आप इस तरह इस संपत्ति का उपयोग करने के लिए सक्षम होना चाहिए:

((MainWindow)App.Current.MainWindow).Brush = new SolidColorBrush(Colors.Red); 
+0

हाँ मैंने इसे एक नए WPF एप्लिकेशन में करने की कोशिश की और यह काम करता है, लेकिन मैं चांदी की रोशनी का उपयोग कर रहा हूं, इससे कोई फर्क पड़ता है। – sprocket12

+0

हां मैं सार्वजनिक संपत्ति का उपयोग कर सकता हूं, केवल उस समस्या के साथ मुझे इस रंग को एक IValueConverter में उपलब्ध होने की आवश्यकता है ... – sprocket12

+0

कृपया मेरे उत्तर में मेरा नवीनतम अपडेट देखें। – Sheridan

3

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

http://msdn.microsoft.com/en-us/library/ms601221(v=vs.95).aspx

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