Hello,
I'm having trouble with my ResourceDictionary. I have a generic.xaml (Build Action=Page)
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:my="clr-namespace:siemens.CSharp.JobManagement" x:Class="IPIPEResourceDictionary"><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="/siemens.CSharp;component/themes/buttons.xaml"/><ResourceDictionary Source="/siemens.CSharp;component/themes/colors.xaml"/><ResourceDictionary Source="/siemens.CSharp;component/themes/controls.xaml"/></ResourceDictionary.MergedDictionaries><Color x:Key="TEST">#25254E</Color></ResourceDictionary>
all other ResourceDictionaries are set to Build Action=Content.
The AssemblyInfo.cs has following entry
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
In one of the resource dictionaries I have a Style
<Style TargetType="{x:Type my:IPIPEStatusSideBarView}"><Setter Property="Height" Value="150"/><Setter Property="Width" Value="350"/><Setter Property="Margin" Value="350,0,0,0"/><Setter Property="Background" Value="#65658E"/>
and I have a control that overrides the style key:
public class IPIPEStatusSideBarView : UserControl { static IPIPEStatusSideBarView() { DefaultStyleKeyProperty.OverrideMetadata(typeof(IPIPEStatusSideBarView), new FrameworkPropertyMetadata(typeof(IPIPEStatusSideBarView))); //GetDefaultStyle())); }
The problem is, that the style never gets applied. I have done some testing a found an interesting thing:
var foo = new Uri("Themes/generic.xaml", UriKind.RelativeOrAbsolute); ResourceDictionary dict = new ResourceDictionary(); dict.BeginInit(); dict.Source = foo; dict.EndInit(); Style = dict["TEST"] as Style; Style = dict[typeof(IPIPEStatusSideBarView)] as Style; Style = dict[typeof(IPIPEStatusSideBarView)] as Style;
If I access "TEST" it gives my the value immediately. If I access IPIPEStatusSideBarView I get the value only the second time. If I put it one level up into the main dictionary, it works immediately.
What could be wrong. Why is it loaded in some lazy way?
Thanks
Martin
msedi