У меня есть DataTemplate с несколькими слоистыми текстовыми и графическими объектами.Одним из них является эффект свечения, который исходит из свойства RadialGradientBrush Fill прямоугольника.Сначала я назвал Rectangle и привязал его к свойству Fill и изменил его с помощью DataTrigger.Это работало нормально, но у меня есть несколько объектов RadialGradientBrush в разделе «Ресурсы», и, как вы можете видеть ниже, я могу повторить много раз, когда все, что я хочу сделать, это изменить GradientStops.Поэтому я удалил привязку Fill, добавил и назвал RadialGradientBrush, и хотя я могу привязать кисть из ресурсов, я не могу получить к ней доступ в DataTrigger.Я получаю ошибку «Не удается найти цель триггера».
<Rectangle x:Name="Glow" IsHitTestVisible="False" RadiusX="1.5" RadiusY="1.5" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" StrokeThickness="0" Opacity="1.0">
<Rectangle.Fill>
<RadialGradientBrush x:Name="GlowGradient" Center="0.5,0.848" GradientOrigin="0.5,0.818" RadiusX="-1.424" RadiusY="-0.622" GradientStops="{StaticResource DefaultGradient}">
<RadialGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterX="0.5" CenterY="0.848" ScaleX="1" ScaleY="1.8"/>
<SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.848"/>
<RotateTransform Angle="-33.418" CenterX="0.5" CenterY="0.848"/>
<TranslateTransform Y="0.278"/>
</TransformGroup>
</RadialGradientBrush.RelativeTransform>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
В ресурсах у меня есть несколько объектов RadialGradientBrush, подобных этому.
<RadialGradientBrush x:Key="EscalatedGlow" Center="0.5,0.848" GradientOrigin="0.5,0.818" RadiusX="-1.424" RadiusY="-0.622">
<RadialGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterX="0.5" CenterY="0.848" ScaleX="1" ScaleY="1.8"/>
<SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.848"/>
<RotateTransform Angle="-33.418" CenterX="0.5" CenterY="0.848"/>
<TranslateTransform Y="0.278"/>
</TransformGroup>
</RadialGradientBrush.RelativeTransform>
<GradientStop Color="Aqua" Offset="0.168"/>
<GradientStop Color="#5E1D96FF" Offset="0.474"/>
<GradientStop Color="#1101FFFF" Offset="1"/>
</RadialGradientBrush>
Я хочу заменить их меньшим количеством кодадля каждого изменения цвета, поэтому я создал несколько объектов GradientStopCollection в Ресурсах, чтобы заменить их на.
<GradientStopCollection x:Key="EscalatedGradient">
<GradientStop Color="Aqua" Offset="0.168"/>
<GradientStop Color="#5E1D96FF" Offset="0.474"/>
<GradientStop Color="#1101FFFF" Offset="1"/>
</GradientStopCollection>
Хотя я могу связываться с градиентами ресурса, проблема в том, что я не могу получить доступ к кисти GlowGradient дляизменить его свойство GradientStops.Ранее я мог получить доступ к Glow Rectangle, используя DataTrigger со следующим:
<DataTrigger Binding="{Binding Path=Status}" Value="Escalated">
<Setter TargetName="Glow" Property="Fill" Value="{StaticResource EscalatedGlow}"/>
</DataTrigger>
Когда я использую следующее, я получаю ошибку «Cannot find Trigger target».
<DataTrigger Binding="{Binding Path=Status}" Value="Escalated">
<Setter TargetName="GlowGradient" Property="GradientStops" Value="{StaticResource EscalatedGradient}"/>
</DataTrigger>
Я думаю, что должен быть способ избавить меня от репликации всего RadialGraientBrush каждый раз, когда я хочу изменить цвета.Есть ли способ получить доступ к кисти Rectangle Fill из DataTrigger?Любые советы кто-нибудь?Заранее спасибо.