Mr J
Mr J

Reputation: 2963

c# Can I use a Properties.settings value in my App.xml?

This is my App.xaml in a c# wpf project.

<Application x:Class="Test.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:System="clr-namespace:System;assembly=mscorlib"
             StartupUri="MainWindow.xaml">

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/REPLACEME.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/REPLACEME.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Is there any way I can add a Properties.settings.default value into where "REPLACEME" is?

Upvotes: 0

Views: 210

Answers (1)

mm8
mm8

Reputation: 169340

Is there any way I can add a Properties.settings.default value into where "REPLACEME" is?

No, not using the built-in XAML compiler.

You'd better add the resource dictionaries programmatically in App.xaml.cs:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        this.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri($"pack://application:,,,/MahApps.Metro;component/Styles/Accents/{Properties.settings.default}.xaml") });
    }
}

XAML is a markup language.

Upvotes: 1

Related Questions