Тёмная и свтела тема wpf c#

У меня появилась проблема у меня есть ResourceDictionary для тёмной:

<Style TargetType="Border" 
       x:Key="Border">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Source={x:Static properties:Settings.Default}, Path=ColorMode}" Value="Dark">
            <Setter Property="Background" Value="#051b2e"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

и свётлой темы:

<Style TargetType="Border" 
       x:Key="Border">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Source={x:Static properties:Settings.Default}, Path=ColorMode}" Value="Light">
            <Setter Property="Background" Value="#FFD8EFFB"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

я добавил их в App.xaml:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Themes/Dark.xaml"/>
            <ResourceDictionary Source="Themes/Light.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

также прибиндил к MainWindow

<Border CornerRadius="10"
        Style="{StaticResource Border}">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="75*"/>
            <ColumnDefinition Width="239*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="63*"/>
            <RowDefinition Height="437*"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="1" Grid.ColumnSpan="2" Margin="0,0,685,0">
            <RadioButton Content="Options"
                         Height="50"
                         Style="{StaticResource RadioButton}"
                         Command="{Binding OptionsButton}"/>

        </StackPanel>

        <ContentPresenter Content="{Binding CurrentPage}" 
                          Grid.Column="1"
                          Margin="5" 
                          Grid.RowSpan="2" />
    </Grid>
</Border>

установил по умолчанию Light

и в коде меняю его

 public static ICommand Light
    {
        get
        {
            return new DelegateCommand((obj) =>
            {
                Properties.Settings.Default.ColorMode = "Light";
                Properties.Settings.Default.Save();
            });
        }
    }

    public static ICommand Gray
    {
        get
        {
            return new DelegateCommand((obj) =>
            {
                Properties.Settings.Default.ColorMode = "Dark";
                Properties.Settings.Default.Save();
            });
        }
    }

и получается так что когда я запускаю приложение вижу это введите сюда описание изображения

когда свтелая тема то всё работает, а когда тёмная то такое:

введите сюда описание изображения

елси кто знает, буду рад любой помощи)


Ответы (1 шт):

Автор решения: vasyleoo

Может кому то пригодиться код который работает на WPF

        public ICommand Dark
    {
        get
        {
            return ChangeTheme("Themes\\DarkMode.xaml");
        }
    }

private ICommand ChangeTheme(string inputUri)
    {
        return new DelegateCommand((obj) =>
        {
            Application.Current.Resources.MergedDictionaries.RemoveAt(0);

            var uri = new Uri(inputUri, UriKind.Relative);
            var resDict = new ResourceDictionary() { Source = uri };
            Application.Current.Resources.MergedDictionaries.Add(resDict);
        });
    }
→ Ссылка