如何使用自定义渐变笔刷绑定颜色

时间:2018-12-14 10:47:31

标签: c# wpf mvvm data-binding

我在使用名为AngleGradientBrush的自定义渐变笔刷来绘制Shape时遇到问题。

要创建这个新的Gradient Brush,我使用了以下命令:http://wpfkorea.tistory.com/169

当我仅使用AngleGradientBrush.cs中的代码来使任何形状具有圆形颜色时,它的效果都非常好。

问题在于,如果执行此操作,对于LinearGradientBrushRadiantGradientBrush来说是可行的:

            <Ellipse Name="FourDirectionsEllipse"
                       StrokeThickness="{Binding StrokeThiknessVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                       Width="{Binding ElementWidthVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                       Height="{Binding ElementHeightVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                       Opacity="{Binding OpacityFourDirectionsEllipseVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                       IsEnabled="{Binding EnableFourDirectionsEllipseVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                       HorizontalAlignment="Center" >
                <Ellipse.Stroke>
                    <LinearGradientBrush>
                        <GradientStop Color="{Binding DownColorVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Offset="0.125"/>
                        <GradientStop Color="{Binding RightColorVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Offset="0.125"/>
                        <GradientStop Color="{Binding RightColorVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Offset="0.375"/>
                        <GradientStop Color="{Binding UpColorVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Offset="0.375"/>
                        <GradientStop Color="{Binding UpColorVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Offset="0.628"/>
                        <GradientStop Color="{Binding LeftColorVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Offset="0.628"/>
                        <GradientStop Color="{Binding LeftColorVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Offset="0.878"/>
                        <GradientStop Color="{Binding DownColorVM, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Offset="0.878"/>
                    </LinearGradientBrush>
                </Ellipse.Stroke>
            </Ellipse>

颜色绑定没有问题,因此我可以更改每个GradientStop的颜色。

但是,如果我使用<angleGradientBrushSample:AngleGradientBrush GradientDetail="1"> <GradientStop Color=...>...</angleGradientBrushSample:AngleGradientBrush>,则绑定无效。

我希望这不是仅针对我的代码的特定问题,但我认为当某些人尝试定义新的GradientBrush时,它也会有所帮助。

问题与我提到的网站中的代码有关吗?我需要添加一些东西来处理新颜色吗?

0 个答案:

没有答案