I had been working on a WPF project for a while, but haven't touched it in 2 months now. Now that I'm back on it, I have the following problem:
I use merged dictionaries to create skins, and easily swap them at runtime. However, each skin does not change at runtime. But while I was noobish at this, I just followed a bunch of tutorials, and I used DynamicResource everywhere, not even wondering if I should rather use StaticResource.
The result is that when I tried sending my app to a friend using windows XP (i use seven). The Luna theme is thrown over my app, making the design ugly... And as far as I understood it comes from DynamicResource.
So now, I want to change to StaticResource, I simply tried to replace every "DynamicResource" with "StaticResource". And it throws me this exception:
Message = "'La valeur fournie sur 'System.Windows.StaticResourceExtension' a levé une exception.' numéro de ligne '8' et position de ligne '230'."
In english, it means: Message = "'The value given to 'System.Windows.StaticResourceExtension' threw an exception.' line number '8' and position on the line '230'.
I then put a try/catch block to have a better idea of the problem:
{"Impossible de trouver la ressource nommée'styleBackground'. Les noms de ressources respectent la casse."}
In english: Impossible to find the resource named 'styleBackground'. The resource names are case sensitive.
It's about a TabItem.
So two questions here: Am I doing the right thing by changing DynamicResource to StaticResource? And if so, what do I need to do?
Thanks,
FB.
EDIT: the program gets the error on the last of these lines:
<Window x:Class="Sc2ReplayMonkey.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
xmlns:local="clr-namespace:Sc2ReplayMonkey" ResizeMode="CanResize"
Title="Starcraft II Replay Monkey"
Width="991" Icon="Resources\Icons\SC2_Replay_Monkey.png"
WindowStartupLocation="CenterScreen" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="1024" Height="774" Visibility="Visible" Foreground="#00000000" Margin="0">
The solution was to load all resourcedictionaries at startup instead of starting with no skin (which works with dynamic resource) and letting the user chose a skin at runtime.