wpf привязывает градиент эллипса к значению ivalueconverter
Я связал эллипс с флажком и iValueConverter (это работает... Заполните (см. Ниже)).
<Ellipse Name="ellLeftRoleEnabled"
Fill="{Binding IsChecked, ElementName=btnRollLeftEnabled, Converter={StaticResource myColorConverter}}"
Height="80" Canvas.Left="355" Stroke="#FF0C703E" Canvas.Top="440" Width="80"/>
Но теперь, как я могу использовать это для LinearGradientBrush/GradientStop?
<Ellipse Name="ellLeftRoleMoving" Height="100" Canvas.Left="345" Stroke="Black" Canvas.Top="535" Width="100">
<Ellipse.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="{?????} Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
Пожалуйста помоги. Благодарю вас.
2 ответа
Решение
При использовании его для цвета цвета GradientStop вы не должны возвращать кисть, как первый конвертер, а цвет. В остальном то же самое.
Ваш конвертер должен вернуть LinearGradientBrush
вместо SolidColorBrush
и держать вас как есть
public class myColorConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((bool) value)
? new LinearGradientBrush()
{
EndPoint = new Point(0.5, 1),
StartPoint = new Point(0.5, 0),
GradientStops = new GradientStopCollection()
{
new GradientStop(Colors.Red, 0),
new GradientStop(Colors.White, 1)
}
}
: new LinearGradientBrush()
{
EndPoint = new Point(0.5, 1),
StartPoint = new Point(0.5, 0),
GradientStops = new GradientStopCollection()
{
new GradientStop(Colors.Blue, 0),
new GradientStop(Colors.Red, 1)
}
};
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Xaml
<Ellipse Name="ellLeftRoleEnabled"
Fill="{Binding IsChecked, ElementName=btnRollLeftEnabled, Converter={StaticResource myColorConverter}}"
Height="80" Canvas.Left="355" Stroke="#FF0C703E" Canvas.Top="440" Width="80"/>