wpf 将椭圆 gradientstop 颜色绑定到 ivalueconverter
wpf bind ellipse gradientstop color to 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>
请帮忙。谢谢。
当将它用于 GradientStop Color 的颜色时,您不应该 return 像第一个转换器那样的画笔,而是颜色。其余的是一样的。
您的转换器应该 return LinearGradientBrush
而不是 SolidColorBrush
并且让您 xaml 保持原样
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"/>
我已经将一个椭圆绑定到一个复选框和一个 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>
请帮忙。谢谢。
当将它用于 GradientStop Color 的颜色时,您不应该 return 像第一个转换器那样的画笔,而是颜色。其余的是一样的。
您的转换器应该 return LinearGradientBrush
而不是 SolidColorBrush
并且让您 xaml 保持原样
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"/>