Изменение направления градиента во время выполнения программы
Пишу небольшую программку, в которой можно просматривать двухцветные градиенты, написав небольшую основу решил добавить вращение градиента по перетаскиванию мыши с нажатой ЛКМ и столкнулся с проблемой.
Значения StartGradient и EndGradient меняются во время выполнения программы, поэтому в Gradient они указаны как динамичные ресурсы. На этом этапе все хорошо.
Теперь нужно изменять значения StartPoint и EndPoint в Gradient, следовательно в GradientBackground он должен быть указан как динамичный ресурс.
<Application.Resources>
<Color x:Key="StartGradient">White</Color>
<Color x:Key="EndGradient">Black</Color>
<LinearGradientBrush x:Key="Gradient" StartPoint="0, 0.5" EndPoint="1, 0.5">
<GradientStop Color="{DynamicResource StartGradient}" Offset="0"/>
<GradientStop Color="{DynamicResource EndGradient}" Offset="1"/>
</LinearGradientBrush>
<Style x:Key="GradientBackground" TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="{DynamicResource Gradient}"/>
</Style>
</Application.Resources>
Изменяю направление, например, так:
((LinearGradientBrush)Application.Current.Resources["Gradient"]).StartPoint = new Point(1, 0.5);
((LinearGradientBrush)Application.Current.Resources["Gradient"]).EndPoint = new Point(0, 0.5);
Направление изменяется, но не изменяются цвета полученные от StartGradient и EndGradient, когда это нужно. А если в GradientBackground поставить StaticResource, то получится обратная ситуация - будут изменяться цвета, но не будет изменяться направление градиента.