WPF: изменение ресурсов (цветов) из App.xaml во время выполнения

Я пытаюсь сделать свое приложение более настраиваемым, позволяя пользователям выбирать цвет из диалогового окна «Выбор цвета», а затем изменяя стиль приложения в режиме реального времени (с помощьюDynamicResource)

Как я могу изменить конкретные ресурсы, которые находятся вapp.xaml ?

Я пробовал что-то вроде этого, но не повезло (просто тест):

var colorDialog = new CustomControls.ColorPickerDialog();
var dResult = colorDialog.ShowDialog();
var x = Application.Current.Resources.Values.OfType<LinearGradientBrush>().First();
x = new LinearGradientBrush();
x.GradientStops.Add(new GradientStop(colorDialog.SelectedColor,1));

Это выдержкаapp.xaml файл:

<Application.Resources>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" x:Key="HeaderBackground">
            <GradientStop Color="#82cb02" Offset="1"/>
            <GradientStop Color="#82cb01" Offset="0.2"/>
            <GradientStop Color="#629a01" Offset="0.5"/>
        </LinearGradientBrush>

Каков наилучший способ разрешить эту форму настраиваемости (в основном просто изменение некоторых цветов) для приложения?

[Обновить]

Я только что нашелэтот ответ из предыдущего вопроса, который был задан, и попробовал, но я получаю то же самоеInvalidOperationException Исключение Петой упоминается в комментариях к данному ответу. Вот пример кода из ответа:

Xaml:

<LinearGradientBrush x:Key="MainBrush" StartPoint="0, 0.5" EndPoint="1, 0.5" >
    <GradientBrush.GradientStops>
        <GradientStop Color="Blue" Offset="0" />
        <GradientStop Color="Black" Offset="1" />
    </GradientBrush.GradientStops>
</LinearGradientBrush>

C #:

LinearGradientBrush myBrush = FindResource("MainBrush") as LinearGradientBrush;
myBrush.GradientStops[0].Color = Colors.Red;

Ответы на вопрос(4)

Ваш ответ на вопрос