Search code examples
wpfuser-controlsresourcedictionary

xaml ResourceDictionary inside User Control Library


how is it possible to define a ResourceDictionary inside a User Control Library and access them via Xaml-Code.

I've created something like this:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
                xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
                >


    <Style x:Key="NormalStyle" TargetType="{x:Type Control}">
        <Setter Property="Foreground" Value="Black" />
        <Setter Property="FontSize" Value="12" />
        <Setter Property="FontFamily" Value="Arial" />
        <Setter Property="FontStyle" Value="Normal" />
    </Style>
    .
    .
    .
</ResourceDictionary

And now I want to use this "NormalStyle" with a Control

 Style="{StaticResource NormalStyle}"

But Visual Studio says "The resource "NormalStyle" could not be resolved." Did i miss or forget something?

Thanks for helping me


Solution

  • You will have to include or merge your ResourceDictionary with UserControl.Resources like below. Here in Source give path to your ResourceDictionary.

    <UserControl.Resources>
            <ResourceDictionary Source="MyResourceDictionary.xaml"/>
    </UserControl.Resources>
    

    OR

    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="MyResourceDictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
    

    Then you can use the resources in the dictionary inside your UserControl

    Style="{StaticResource NormalStyle}"