I need to add code behind class to Resource Dictionary as described in this question. (I know that this is not a good practise but it should work based on the comments for linked question) .I'm referencing the code with x:Class attribute:
XAML (separate Resource Dictionary file):
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="MyNamespace.MyStandardResources"> ... </ResourceDictionary>
CODE:
using System.Windows; namespace MyNamespace { public partial class MyStandardResources : ResourceDictionary { public MyStandardResources() { InitializeComponent(); } //... } }
This causes the runtime parser exception:
Parser internal error: Object writer 'xClassNotDerivedFromElement'. [Line: xxx Position: xxx] at System.Windows.Application.LoadComponent.
The resources are included in App.xaml with ResourceDictionary.MergedDictionaries tag.
Answer: 1
Are you trying to use this ResourceDictionary as a Source value of a merged dictionary? If so, that is not supported. You get that xClassNotDerivedFromElement error, which is a weird way of indicating it, but here's why: the Source attribute value gets translated in a way that references the XAML as XAML, not as a class. The XAML parser opens that XAML as a pure load action without benefit of any precompile, and can't reconcile the x:Class at that time.
by : Wolf Schmidt-MSFThttp://stackoverflow.com/users/436393Answer: 2
The x:Class is restricted for merged dictionaries in App.xaml. Instead you should use your class defined as code behind in App resources:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="MyNamespace.App" xmlns:view="clr-namespace:MyNamespace"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <view:MyStandardResources /> .... </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
by : Pavel Korsukovhttp://stackoverflow.com/users/956986
No comments:
Post a Comment
Send us your comment related to the topic mentioned on the blog